dongyanfeng0546 2013-01-25 05:33
浏览 92
已采纳

SoapClient创建XML

I need to create this 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>  

I am new to using SoapClients and need some help doing this. How would I do it?

  • 写回答

2条回答 默认 最新

  • dongxuan58311366668 2013-02-06 23:07
    关注

    I figured it out. I needed to do two things. First I needed to create the header section which had the security in it. $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);
    

    Second I needed to create an array and pass it to the function that was the WSDL had. I got a list of these by using __getFunctions(). I then used this code to generate the last of the xml

        $airports = array("AirportInfoRQ" => array("AirportCode" => "PPP", "AirportCode" => "BNE"));
        $responce = $soap_client->AxisTransaction($airports);
    

    This gave me slightly different xml I stated above but it was the correct xml to get the SoapClient working correctly

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题