0
그래서이 API의 제작자는 제 코드를 명확하게 기능적으로 표시하고 있습니다. 문제는 REST API가 PI 또는 QS를 사용하는 한 제대로 작동한다는 것입니다. REST 요청과 함께 전송되는 XML 문서를 요구하는 고급 기능을 사용하려고하면 실행시 false가 반환됩니다. 다음과 같이POST에서 REST API를 사용하고 PHP에서 XML을 사용하면 안되면 false를 반환합니다.
<?php
$objCurlToken = curl_init();
$strUrlToken = "https://servername/apimember/services/rest/connect/open/username/password/token";
$arrCurlOptions1 = array(
CURLOPT_URL => $strUrlToken,
CURLOPT_RETURNTRANSFER => true
);
curl_setopt_array($objCurlToken, $arrCurlOptions1);
$strXMLToken = curl_exec($objCurlToken);
$objXML = simplexml_load_string($strXMLToken);
curl_close($objCurlToken);
$strXMLPost = '
<?xml version="1.0" encoding="utf-8"?>
<synchroMember>
<memberUID>
EMAIL
</memberUID>
<dynContent>
<entry>
<key>
EMAIL
</key>
<value>
[email protected]
</value>
</entry>
<entry>
<key>
FIRSTNAME
</key>
<value>
KLAUS LAGER
</value>
</entry>
<entry>
<key>
EMVADMIN1
</key>
<value>
This is klaus lager, the test subject
</value>
</entry>
</dynContent>
</synchroMember>
';
$objCurlProbe = curl_init();
$strUrlProbe = "https://servername/apimember/services/rest/member/insertOrUpdateMember/" . $objXML->result . "";
$arrCurlOptions2 = array(
CURLOPT_URL => $strUrlProbe,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => $strXMLPost
);
curl_setopt_array($objCurlProbe, $arrCurlOptions2);
$strCurlXMLResult = curl_exec($objCurlProbe);
echo "<pre>";
var_dump(htmlentities($objXML->result));
var_dump(htmlentities($strXMLPost));
var_dump(htmlentities($strCurlXMLResult));
curl_close($objCurlProbe);
$objXMLResult = simplexml_load_string($strCurlXMLResult);
var_dump($objXMLResult);
?>
출력은 같습니다
은 API 문서에서 촬영string(84) "*tokenkey*"
string(615) "
<?xml version="1.0" encoding="utf-8"?>
<synchroMember>
<memberUID>
EMAIL
</memberUID>
<dynContent>
<entry>
<key>
EMAIL
</key>
<value>
[email protected]
</value>
</entry>
<entry>
<key>
FIRSTNAME
</key>
<value>
KLAUS LAGER
</value>
</entry>
<entry>
<key>
EMVADMIN1
</key>
<value>
This is klaus lager, the test subject
</value>
</entry>
</dynContent>
</synchroMember>
"
string(0) ""
bool(false)
: 나는 문제가 발견
***Insert or Update Member Data***
This method searches a specified column of the Member table for a particular value used to identify a member
in order to update the member's data. If the member is not found, a new member is created. Any criteria can
be used to find the member including one of the fields to be updated.
The memberUID attribute is used to specify the key and value used as search criteria. The dynContent attribute
should only contain the values to be updated.
**insertOrUpdateMember**
***Input***
https://{server}/apimember/services/rest/member/insertOrUpdateMember/{token}
<?xml version="1.0" encoding="utf-8"?>
<synchroMember>
<memberUID>
{fieldNameA},
{fieldNameB}
</memberUID>
<dynContent>
<entry>
<key>>
{fieldNameA}
</key>
<value>
{fieldValueA}
</value>
</entry>
<entry>
<key>
{fieldNameB}
</key>
<value>
{fieldValueB}
</value>
</entry>
<entry>
<key>
{fieldNameC}
</key>
<value>
{fieldValueC}
</value>
</entry>
</dynContent>
</synchroMember>
"PI"? "QS"? 나는 따라하지 않는다. 이 API는 무엇입니까? 우리는 아마 당신이 그것을 알지 못하고 어떤 문서를 가지고 도울 수 없습니다. –
QS : 쿼리 문자열, PI : 경로 정보. REST가 사용되는 가장 일반적인 두 가지 방법을 설명하는 데 사용되며, QS는 get 변수를 사용하고 PI는 경로 변수를 사용합니다. API는 EmailVision이라고하는 것입니다. 편집 : 아래에서 사용하려고하는 설명서의 부분을 게시했습니다. –