PHP使用SOAP客户端发送SOAP请求

时间:2013-07-14 07:20:30

标签: php soap

这是我第一次使用SOAP,我已经阅读了所有手册,但仍然使用以下示例:

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"   
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
   <soap:Header>
    <AuthenticationInfo xmlns="https://blabla.com/ws/Quoting">
      <strUserName>[username]</strUserName>
       <strPassword>[password]</strPassword>
   </AuthenticationInfo>
 </soap:Header>
 <soap:Body>
    <GetQuotes xmlns="https://blabla.com/ws/Quoting">
      <CallerClientID>0</CallerClientID>
          <quoteRequest>
            <CapacityCode>2</CapacityCode>
           <BabiesCount>0</BabiesCount>
           <QuotingOptions>0</QuotingOptions>
         </quoteRequest>
      <clientIDs>
        <int>20295</int>
      </clientIDs>
      <withUrlParam>false</withUrlParam>
    </GetQuotes>
  </soap:Body>
</soap:Envelope>

我不明白如何授权启动soapclient,请帮助。

1 个答案:

答案 0 :(得分:1)

您需要使用SoapHeader。以下是示例。

$ns = 'https://blabla.com/ws/Quoting'; //Namespace of the WS. 

//Body of the Soap Header. 
$headerbody = array('strUserName' => $someUser, 
                    'strPassword' => $somePass); 

//Create Soap Header.        
$header = new SOAPHeader($ns, 'AuthenticationInfo', $headerbody);        

//set the Headers of Soap Client. 
$soap_client->__setSoapHeaders($header);