2013-05-08 236 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());