Таким образом, создатели этого API четко обозначили мой код как функциональный, видя, как они сделали эту чертову штуку.Дело в том, что REST API работает нормально, пока я использую только PI или QS.Когда я пытаюсь использовать более продвинутые функции, требующие отправки XML-документа с запросом REST, он просто возвращает 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>
klaus@lagerbrau.de
</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);
?>
Вывод выглядит следующим образом:
string(84) "*tokenkey*"
string(615) "
<?xml version="1.0" encoding="utf-8"?>
<synchroMember>
<memberUID>
EMAIL
</memberUID>
<dynContent>
<entry>
<key>
EMAIL
</key>
<value>
klaus@lagerbrau.de
</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)
Взято из документации API:
***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>