2010-05-24 90 views
1

我想模仿使用Zend_Soap_Client的请求。如何在SOAP请求正文中发送散列数据?

<SOAP-ENV:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:clr="http://schemas.microsoft.com/soap/encoding/clr/1.0" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> 
<SOAP-ENV:Header> 
<h3:__MethodSignature xsi:type="SOAP-ENC:methodSignature" 
xmlns:h3="http://schemas.microsoft.com/clr/soap/messageProperties" SOAP-ENC:root="1" 
xmlns:a2="http://schemas.microsoft.com/clr/ns/System.Collections">xsd:string a2:Hashtable</h3:__MethodSignature> 
</SOAP-ENV:Header> 

<SOAP-ENV:Body> 
    <i4:ReturnDataSet id="ref-1" xmlns:i4="http://schemas.microsoft.com/clr/nsassem/Interface.IRptSchedule/Interface"> 
    <sProc id="ref-5">BU</sProc> 
    <ht href="#ref-6"/> 
    </i4:ReturnDataSet><br/> 

    <a2:Hashtable id="ref-6" xmlns:a2="http://schemas.microsoft.com/clr/ns/System.Collections"> 
    <LoadFactor>0.72</LoadFactor> 
    <Version>1</Version> 
    <Comparer xsi:null="1"/> 
    <HashCodeProvider xsi:null="1"/> 
    <HashSize>11</HashSize> 
    <Keys href="#ref-7"/> 
    <Values href="#ref-8"/> 
    </a2:Hashtable> 

    <SOAP-ENC:Array id="ref-7" SOAP-ENC:arrayType="xsd:anyType[1]"> 
    <item id="ref-9" xsi:type="SOAP-ENC:string">@AppName</item> 
    </SOAP-ENC:Array><br/> 

    <SOAP-ENC:Array id="ref-8" SOAP-ENC:arrayType="xsd:anyType[1]"> 
    <item id="ref-10" xsi:type="SOAP-ENC:string">AAGENT</item> 
    </SOAP-ENC:Array> 
</SOAP-ENV:Body> 
</SOAP-ENV:Envelope> 

似乎不知何故,我已经给送散列“REF-7”“REF-8”阵列嵌入体内?我怎样才能做到这一点?

功能ReturnDataSet采用两个参数,如何可以发送附加“REF-7”“REF-8”阵列数据?

$client = new SoapClient($wsdl_url, array('soap_version' => SOAP_1_1)); 
$result = $client->ReturnDataset("BU", $ht); 

我不知道如何设置$ HT,使散列数据作为不同的身体进入发送。

谢谢。

回答

0

你有没有尝试发送一个二维数组为$ ht?从查看代码,$ ht对应于一个使用ref-7和ref-8作为数组本身的散列表。

我试图在Visual Studio中打开这个服务来了解参数的类型,但我收到了一些模式错误,主要是缺少dataTypes。你确定这个Web服务已经配置好了吗?

+0

我试着发送2D数组,但它给了我错误。为了测试目的,我使用CURL发送了整个请求,并按预期工作。 – understack 2010-06-02 17:55:19

相关问题