我需要创建这个xml:
<soapenv:Envelope
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Header>
<wsse:Security xmlns:wsse="http://schemas.xmlsoap.org/ws/2002/04/secext">
<wsse:UsernameToken>
<wsse:Username>user</wsse:Username>
<wsse:Password>password</wsse:Password>
</wsse:UsernameToken>
</wsse:Security>
</soapenv:Header>
<soapenv:Body>
<vb:getAirportInfo xmlns:vb="http://www.example.com/schema/2005/02/booking.xsd">
<airport>BNE</airport>
<airport>PPP</airport>
<airport>MEL</airport>
</vb:getAirportInfo>
</soapenv:Body>
</soapenv:Envelope>
我是使用SoapClients的新手,需要一些帮助才能做到这一点。我该怎么做?
答案 0 :(得分:0)
要成功使用PHP中的SOAP,您需要做两件事:
使用SoapClient非常简单,初始化后,您将获得可以像往常一样调用方法的对象,并将这些调用转发给服务器。
SoapServer只关于创建服务实例并调用handle方法。
这些都不包括您发布的XML的手动处理。它神奇地在它自己的工作(非常字面)。
答案 1 :(得分:0)
我明白了。我需要做两件事。 首先,我需要创建具有安全性的标题部分。 $ soap_client = new SoapClient(“airportinfo.wsdl”,array(“trace”=&gt; 1,“exceptions”=&gt; 0));
$header_part = '
<wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" SOAP-ENV:mustUnderstand="1">
<wsse:UsernameToken>
<wsse:Username>'.$username.'</wsse:Username>
<wsse:Password>'.$password.'</wsse:Password>
</wsse:UsernameToken>
</wsse:Security>
';
$soap_var_header = new SoapVar( $header_part, XSD_ANYXML, null, null, null );
$soap_header = new SoapHeader( 'http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd', 'wsse', $soap_var_header, true );
$soap_client->__setSoapHeaders($soap_header);
其次我需要创建一个数组并将其传递给WSDL所具有的函数。我使用__getFunctions()获得了这些列表。然后,我使用此代码生成最后一个xml
$airports = array("AirportInfoRQ" => array("AirportCode" => "PPP", "AirportCode" => "BNE"));
$responce = $soap_client->AxisTransaction($airports);
这给了我稍微不同的xml我上面说过但是正确的xml让SoapClient正常工作