首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP SOAP客户端问题

PHP SOAP客户端问题
EN

Stack Overflow用户
提问于 2013-01-04 01:16:15
回答 1查看 411关注 0票数 2

我对使用PHP的SOAP有一个基本的了解,但我被困在了我希望被证明是"DUH“的时刻。

我有一个用来从远程站点检索信息的WSDL文件,并且一直在使用它:

代码语言:javascript
复制
$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循环,为每个订单发送一个请求。

根据文档,我应该能够提供订单数组并一次检索多个订单,并且,如果我使用在线工具http://soapclient.com/soaptest.html并输入多个订单,那么我将获得预期的结果。从soapclient.com生成的xml请求如下所示:

代码语言:javascript
复制
<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,我可以发送一个单一的请求为多个订单?

提前感谢您:-)

编辑:

感谢@DeaconDesperado和@EM-Creations的回复。@DeaconDesperado是对的-我应该能够使用$client->VendaRetrieveOrder方法。我已经尝试了许多方法来生成orderElements数组,下面是最新的,在我看来是最接近的方法。

代码语言:javascript
复制
$orderElements = 
Array
(
[0] => stdClass Object
    (
        [orderNumber] => 236431
        [orderReference] => 
    )
[1] => stdClass Object
    (
        [orderNumber] => 236431
        [orderReference] => 
    )
)

$orders = $client->VendaRetrieveOrder ($username,$password,'',array("orderElements" => $orderElements));

但是,当我使用它时,我得到了下面的陷阱错误。

代码语言:javascript
复制
SOAP-ERROR: Encoding: object hasn't 'orderReference' property
EN

回答 1

Stack Overflow用户

发布于 2013-02-01 03:34:20

如果你打算在你提供的API中使用大量的功能,可以使用这个。

http://sourceforge.net/projects/wsdl2php/

我在以前的项目中使用它为我节省了很多时间。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14143821

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档