【问题标题】:SOAP client parameters wont workSOAP 客户端参数不起作用
【发布时间】:2017-05-26 20:08:56
【问题描述】:

我必须调用具有这种结构的 SOAP(通过 SOAPUI 获得):

<soapenv:Envelope xmlns:soapenv='http://schemas.xmlsoap.org/soap/envelope/' 
xmlns:v3='http://v3.ws.server.ldap.ws.xxx/' 
xmlns:cod='http://server/Usr/codeUsr'>
   <soapenv:Header/>
   <soapenv:Body>
      <v3:getUsr>
         <cod:codeUsr>P012997</cod:codeUsr>
      </v3:getUsr>
   </soapenv:Body>
</soapenv:Envelope>

客户是: $client = new SoapClient("http://xxx.xxx.xxx.xxx:8080/ws-ldap3/wServiceV3?wsdl");

到目前为止,我尝试过:

echo "a(TT).<br/>";var_dump($client->getUsr('P012997'));
echo "b(TT).<br/>";var_dump($client->getUsr(array('cod' => 'P012997')));
echo "c(TT).<br/>";var_dump($client->getUsr(array('codeUsr' => 'P012997')));
echo "d(TT).<br/>";var_dump ($client->__soapCall('getUsr', array('parameters' => array('cod' => 'P012997'))));
echo "e(TT).<br/>";var_dump ($client->__soapCall('getUsr', array('parameters' => array('codeUsr' => 'P012997'))));
echo "f(TT).<br/>";var_dump ($client->__soapCall('getUsr', array('cod' => 'P012997')));
echo "g(TT).<br/>";var_dump ($client->__soapCall('getUsr', array('codeUsr' => 'P012997')));

没有成功。如何传递参数codeUsr?

TIA,

【问题讨论】:

  • 这应该可以工作 var_dump($client->getUsr(array('codeUsr' => 'P012997')));你有什么错误吗?反应如何?
  • 感谢您的回复。该方法返回所有用户-当参数不正确时-,您建议(c)尝试。没用。
  • 我知道这是 c 尝试,但我想知道 PHP 和 soapui 的实际响应,我遇到了类似的问题,我建议您开始考虑 Web 服务可能有问题,因为应该可以正常工作。
  • btw 使用这个 $client->__getLastRequest() 和 $client->__getLastResponse(),添加它以使它们工作 $client = new SoapClient("path.../wServiceV3?wsdl",数组("trace"=>1));
  • $client->__getLastRequest() string(305) "P012997" && $client->__getLastResponse() string(26255006) ...

标签: php web-services soap


【解决方案1】:

我终于使用 CURL 解决了这个问题(不是这种情况)。我完全按照需要发送 XML。

$xml="<same as before>";
$sDo = curl_init();
curl_setopt($sDo, CURLOPT_URL, "http://xxx.xxx.xxx.xxx:8080/ws-ldap3/wServiceV3?wsdl"); 
curl_setopt($sDo, CURLOPT_CONNECTTIMEOUT, 10);
curl_setopt($sDo, CURLOPT_TIMEOUT, 10);
curl_setopt($sDo, CURLOPT_RETURNTRANSFER, true);
curl_setopt($sDo, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($sDo, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($sDo, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($sDo, CURLOPT_POST, true );
curl_setopt($sDo, CURLOPT_POSTFIELDS, $xml); 
curl_setopt($sDo, CURLOPT_HTTPHEADER, array("Content-Type: text/xml; charset=utf-8", "Content-Length: " . strlen($xml)));
$result = curl_exec($sDo);

发布它以防其他人遇到瓶颈并且无法花费数天时间弄清楚如何使其工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多