在PHP中进行SOAP请求

时间:2017-12-14 15:57:07

标签: php soap nusoap

我正在尝试使用我的代码传递AgentCodeAgentUserAgentPasswdAgentSignature个变量。请帮忙,因为我是SOAP的新手。

这是XML结构。

<soapenv:Header/>
   <soapenv:Body>
      <urn:GetLocationsList soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
         <HeaderInfo xsi:type="urn:THeaderInfo" xmlns:urn="urn:testsrvIntf">
            <AgentCode xsi:type="xsd:string">xxxx</AgentCode>
            <AgentUser xsi:type="xsd:string">xxxx</AgentUser>
            <AgentPasswd xsi:type="xsd:string">xxxx</AgentPasswd>
            <AgentSignature xsi:type="xsd:string">xxxx</AgentSignature>
         </HeaderInfo>
      </urn:GetLocationsList>
   </soapenv:Body>
</soapenv:Envelope>

这是我的PHP代码:

require_once('lib/nusoap.php');
$wsdl = "http://webservices.xxxxxx.xxxxx";

$client = new nusoap_client($wsdl);
$parameters= array('HeaderInfo' => array('AgentCode'      => 'xxxx',
                                              'AgentUser'      => 'xxxx',
                                              'AgentPasswd'    => 'xxxx',
                                              'AgentSignature' => 'xxxx'));
$value = $client->GetLocationsList($parameters);

echo '<h2>Request</h2><pre>' . htmlspecialchars($client->request, ENT_QUOTES) . '</pre>';
echo '<h2>Response</h2><pre>' . htmlspecialchars($client->response, ENT_QUOTES) . '</pre>';
echo '<h2>Debug</h2><pre>' . htmlspecialchars($client->debug_str, ENT_QUOTES) . '</pre>';

1 个答案:

答案 0 :(得分:0)

如果你要使用它,你需要阅读nusoap库的文档。

https://github.com/econea/nusoap

看起来正确的拨打方式是:

$result = $client->call($action, $data);

您正在做的事情是PHP SOAP客户端的工作方式。

http://php.net/manual/en/class.soapclient.php