mrd*_*iri 2 php soap soap-client
我WSDL
以这种方式向服务器发送请求:
$soap = new SoapClient('WSDL_URI');
$soap->SomeFunction(array('Param1' => 123, 'Param2' => 456));
Run Code Online (Sandbox Code Playgroud)
它工作正常,并__getLastRequest
返回:
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://tempuri.org/">
<SOAP-ENV:Body>
<ns1:SomeFunction>
<ns1:Param1>123</ns1:Param1>
<ns1:Param2>456</ns1:Param2>
</ns1:SomeFunction>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Run Code Online (Sandbox Code Playgroud)
但如果我打电话SomeFunction
的__soapCall
,WSDL
服务器刹车下来,不返回正确的响应.
$soap->__soapCall('SomeFunction', array('Param1' => 123, 'Param2' => 456));
Run Code Online (Sandbox Code Playgroud)
__getLastRequest
收益:
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://tempuri.org/">
<SOAP-ENV:Body>
<ns1:SomeFunction/>
<param1>123</param1>
<param2>456</param2>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Run Code Online (Sandbox Code Playgroud)
你看,因为请求不同,它不起作用..
怎么解决?
如php文档SoapClient :: __ soapCall所示,
$client = new SoapClient("some.wsdl");
$client->SomeFunction($a, $b, $c);
// Or
$client->__soapCall("SomeFunction", array($a, $b, $c));
Run Code Online (Sandbox Code Playgroud)
所以我想如果你想用网络服务打电话__soapCall
,你应该这样打电话:
$soap->__soapCall('SomeFunction', array(array('Param1' => 123, 'Param2' => 456)));
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2534 次 |
最近记录: |