2011-10-20 7 views
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> 
+0

"PI"? "QS"?私は従わない。これはどんなAPIですか?私たちはおそらくそれを知らず、いくつかの文書を持っていないとあなたを助けることはできません。 –

+0

QS:クエリ文字列、PI:パス情報.RESTが使用される最も一般的な2つの方法を記述するために使用され、QSはget変数を使用し、PIはパス変数を使用します。 APIはEmailVisionと呼ばれるものです。 編集:以下で使用しようとしているドキュメントの一部を投稿しました。 –

答えて

0

、問題はXMLとして文書を記述したヘッダが欠落していました。 私が知っている限り、これは通常のRESTサーバーでは問題ではないはずですが、唯一受け入れられるデータ形式はXMLです。 問題を解決するのに役立たなかったのは、同社はソフトウェア開発にかなり恐ろしいことだから、システムは決してエラーに反応せず、そうであれば人間が読めるものではなく、会社はエラーコードリストを提供しない。

関連する問題