0
だから、このAPIのメーカーには、私のコードに機能的であることが明確に記されています。問題は、PIまたはQSを単独で使用している限り、REST APIが正常に動作することです。 XML文書がREST要求とともに送信されることを要求するより高度な機能を使用しようとすると、実行時に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が使用される最も一般的な2つの方法を記述するために使用され、QSはget変数を使用し、PIはパス変数を使用します。 APIはEmailVisionと呼ばれるものです。 編集:以下で使用しようとしているドキュメントの一部を投稿しました。 –