2013-05-08 148 views
1

我試圖創建一個SOAP請求,但不能成功。 SOAP WADL網址是http://www.mobipost.com.au/httpapi/Messaging.asmx?WSDL如何創建簡單的SOAP請求?

,並要求應該是這樣的:

<?xml version="1.0" encoding="utf-8"?> 
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> 
    <soap:Header> 
    <AuthenticationHeader xmlns="http://messaging.mobipostapi.thirdscreen.com.au/"> 
     <UserName>SAMPLE_USER</UserName> 
     <Password>SAMPLE_PASS</Password> 
    </AuthenticationHeader> 
    </soap:Header> 
    <soap:Body> 
    <SendSMSToContacts xmlns="http://messaging.mobipostapi.thirdscreen.com.au/"> 
     <oSMS> 
     <MessageText>THIS IS MESSAGE</MessageText> 
     </oSMS> 
     <ContactIDs> 
     <int>123456789</int> 
     <int>987654321</int> 
     </ContactIDs> 
    </SendSMSToContacts> 
    </soap:Body> 
</soap:Envelope> 

我想:

$url = 'http://www.mobipost.com.au/httpapi/Messaging.asmx?WSDL'; 
$client = new SoapClient($url); 
$result = $client->AuthenticationHeader(array('UserName' => 'SAMPLE_USER','Password' => 'SAMPLE_PASS')); 
$result = $client->SendSMSToContacts(array('MessageText' => 'THIS IS MESSAGE')); 
$result = $client->ContactIDs(array('123456789', '987654321')); 

但它顯示錯誤:

Fatal error: Uncaught SoapFault exception: [Client] Function ("AuthenticationHeader") is not a valid method for this service in D:\xampp\htdocs\globalmobile\send_message_v2.php:26 Stack trace: #0 D:\xampp\htdocs\globalmobile\send_message_v2.php(26): SoapClient->__call('AuthenticationH...', Array) #1 D:\xampp\htdocs\globalmobile\send_message_v2.php(26): SoapClient->AuthenticationHeader(Array) #2 {main} thrown in D:\xampp\htdocs\globalmobile\send_message_v2.php on line 26 

能否請你幫我創建有效的SOAP請求以與WSDL服務器進行通信。

預先感謝您。

回答

0

必須只有一個請求,你發送三個。 您必須創建這樣的事情:

1)設置頁眉進行身份驗證:

$auth = $auth = new SOAPAuth('USERNAME', 'PASSWORD'); 
$header = new SOAPHeader('urn:example.org/auth', 'AuthenticationHeader', $auth); 
$client->__setSoapHeaders($header); 

2)創建創建消息文本和聯繫人請求。

$result = $client->SendSMSToContacts(array("MessageText" => "some text", "contactIDs" => array(123456789, 123456789)); 

P.S.對於調試創建客戶端:

$client = new SoapClient($url, array('trace' => 1, 
      'exceptions' => 1,)); 

和發送請求後,看在請求被sended和resopnse它:

var_dump("REQUEST=", $client->__getLastRequest()); 
var_dump("RESPONSE=", $client->__getLastResponse());