2011-08-26 84 views
1

我試圖做一個SOAP請求和我打電話的方法將任意數量的對象由這個定義:如何將對象參數傳遞給PHP中的SOAP方法調用?

<xs:complexType name="thing"> 
    <xs:sequence> 
    <xs:element minOccurs="0" name="string1" type="xs:string"/> 
    <xs:element minOccurs="0" name="string2" type="xs:string"/> 
    <xs:element minOccurs="0" name="string3" type="xs:long"/> 
    </xs:sequence> 
</xs:complexType> 

如何創建一樣,在PHP對象並把它傳遞給皁器方法?眼下(不工作)的代碼,我看起來像這樣:

$obj->string1 = 'something'; 
$obj->string2 = 'something'; 
$obj->string3 = 'something'; 
$param = new SoapParam(new SoapVar($obj, SOAP_ENC_OBJECT, 'method', 'http://ns'), 'paramName'); 

$soapClient->method($param); 

UPDATE:

這是顯示方式的請求主體:

<SOAP-ENV:Body> 
    <ns2:method xsi:type="ns1:method"> 
    <string1>something</string1> 
    <string2>something</string2> 
    <string3>something</string3> 
    </ns2:placeHolds> 
</SOAP-ENV:Body> 

如果我只是通過$ obj而不是創建SoapParam,這是請求中的主體:

<SOAP-ENV:Body> 
    <ns1:method/> 
</SOAP-ENV:Body> 
+0

嘗試傳遞$ obj作爲方法參數。如果您使用的是WSDL,PHP會自行解決它。 – Friek

+0

似乎不工作。 – gregghz

+0

我已經更新了正在發送的相應請求的問題。 – gregghz

回答

1
$client = new SoapClient('endpoint'); 

$sequence->string1 = 'something'; 
$sequence->string2 = 'something'; 
$sequence->string3 = 'something'; 

$obj = array(); 
$obj['sequence'] = $sequence; 

$param = new SoapParam(new SoapVar($obj, SOAP_ENC_OBJECT), 'paramName'); 

$client->__soapCall('method',array($param)); 
相關問題