私はPHPを使用したSOAPの基本的な知識を持っていますが、それらの「DUH」の瞬間の1つであることが判明したいと思っていることに固執しています。
リモートサイトから情報を取得するために使用するWSDLファイルがあり、そのように使用しています。-
$ordernumber = 171994;
$username = "someone@somewhere.com";
$password = "secret";
$arr = array("orderNumber" => $ordernumber,"orderReference" => '');
$client = new SoapClient(BASEPATH."/feed/Orders.wsdl",array('trace' => 1));
$orders = $client->RetrieveOrder ($username,$password,'',array("orderElements" => $arr));
これは単一の注文では問題なく機能し、必要な情報を取得できます。ただし、複数の注文を取得する場合は、foreachループを実行して、注文ごとに1つのリクエストを送信しています。
ドキュメントによると、一連の注文を提供し、一度に複数の注文を取得できるはずです。オンラインツールhttp://soapclient.com/soaptest.htmlを使用して複数の注文を入力すると、期待どおりの結果が得られます。結果。soapclient.comから生成されるxmlリクエストは次のとおりです。-
<email xsi:type="xsd:string">someone@somewhere.com</email>
<password xsi:type="xsd:string">secret</password>
<messageHeader xsi:type="tns:messageHeaderElement">
<senderId xsi:type="xsd:string"/>
<receiverId xsi:type="xsd:string"/>
<messageId xsi:type="xsd:string"/>
<transactionId xsi:type="xsd:string"/>
<transactionTimeStamp xsi:type="xsd:dateTime"/>
</messageHeader>
<orderElements xsi:type="SOAP-ENC:Array" SOAP-ENC:arrayType="tns:queryElement[2]">
<item xsi:type="tns:queryElement">
<orderReference xsi:type="xsd:int"/>
<orderNumber xsi:type="xsd:int">171994</orderNumber>
</item>
<item xsi:type="tns:queryElement">
<orderReference xsi:type="xsd:int"/>
<orderNumber xsi:type="xsd:int">172101</orderNumber>
</item>
</orderElements>
messageHeaderセクションはオプションであり、上記の呼び出しで''を送信しています。
PHP SOAPCLIENTを使用して、複数の注文に対して1つのリクエストを送信する方法を教えてもらえますか?
よろしくお願いします :-)
編集:
@DeaconDesperadoと@EM-Creationsにご回答いただきありがとうございます。@DeaconDesperadoは正しいです-$client->VendaRetrieveOrderメソッドを使用できるはずです。私はorderElements配列を生成するために多くの方法を試しましたが、以下は最新のものであり、私の目には最も近いものです...
$orderElements =
Array
(
[0] => stdClass Object
(
[orderNumber] => 236431
[orderReference] =>
)
[1] => stdClass Object
(
[orderNumber] => 236431
[orderReference] =>
)
)
$orders = $client->VendaRetrieveOrder ($username,$password,'',array("orderElements" => $orderElements));
しかし、それを使用すると、次のトラップされたエラーが発生します。
SOAP-ERROR: Encoding: object hasn't 'orderReference' property