2013-01-25 18 views
-2

我需要创建这个XML:SoapClient的创建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并在Apache服务器上使用SoapClient – user1087185

+0

您是否尝试过某些功能? –

回答

0

我想通了。我需要做两件事。 首先,我需要创建具有安全性的标题部分。 $ soap_client = new SoapClient(“airportinfo.wsdl”,array(“trace”=> 1,“exceptions”=> 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的正常工作

0

要successfuly使用SOAP从PHP,你需要两样东西:

  1. 首先是用PHP捆绑SoapClient的和/或SoapServer的类。他们工作正常,详情请参阅http://php.net/manual/en/book.soap.php
  2. 第二个是WsdlDocument库。它生成服务的WSDL描述,所以其他客户可以轻松使用它。见http://code.google.com/p/wsdldocument/

和SoapClient使用很简单,一旦你初始化它,你会得到对象,你可以调用方法和往常一样,它会将这些调用服务器。

SoapServer仅用于创建服务的实例并调用句柄方法。

这些都不包括手动处理您发布的XML。它神奇地在它自己的工作(完全字面上)。