2016-12-28 70 views
0

所以我在PHP中使用Soap客戶端,我試圖對某些WSDL發出請求。我嘗試了一個特定的輸出,但它似乎離我嘗試做的有點遠。也許我不這樣做。我對WSDL有點新鮮。Soap PHP WSDL XML格式

下面是結果我想:

<SOAP-ENV:Body> 
    <loc:sendSms> 
      <loc:addresses>9000000000</loc:addresses> 
      <loc:senderName>9000000</loc:senderName> 
      <loc:message>test SMS</loc:message> 
    </loc:sendSms> 
</SOAP-ENV:Body> 

這是我嘗試適合我的需求,但它與服務器錯誤結束:

  $MCIResp = (array) $_soapClient->__soapCall('sendSms', 
       'sendMessage' => array(
        'addresses' => '9000000000', 
        'senderName' => '9000000', 
        'message' => 'test SMS ' 

      ) 
     ); 

這是我的錯誤從這個請求:

"SoapFault exception: [Client] SOAP-ERROR: Encoding: object has no 'sendmessage' property";

編輯:通過獲取inspir上作出了一些改進在一些帖子通貨膨脹

這裏是我的代碼現在:

$_soapClient = new SoapClient(
     null, 
     array(
      'location' => 'http://someIP/parlayxsmsgw/services/SendSmsService?wsdl', 
      'uri' => 'http://someIP/parlayxsmsgw/services/SendSmsService?wsdl', 
      'trace' => 1, 
      'cache_wsdl' => WSDL_CACHE_NONE, 
      'use' => SOAP_LITERAL, 
      'style' => SOAP_DOCUMENT, 
      'stream_context' => stream_context_create(array(
       'http' => array(
        'header' => 'servicekey: someservicekey' 
       ), 
      )),    
     ) 
    ); 
    $params = new \SoapVar("<sendSms><addresses>90000000000</addresses><senderName>90000000</senderName><message>test SMS</message></sendSms>",XSD_ANYXML);  

然後我做了

$_soapClient->whatEverNameHereWillBeIgnored($params); 

這是現在我生成XML:

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"> 
    <SOAP-ENV:Body> 
     <sendSms> 
     <addresses>989127184955</addresses> 
     <senderName>98307066</senderName> 
     <message>test SMS</message> 
     </sendSms> 
    </SOAP-ENV:Body> 
    </SOAP-ENV:Envelope> 

但我收到這個迴應:

Unexpected subelement sendSms

做的「loc:」是否強制解決這個問題?因爲當我在原始XML添加它,它說,

Undeclared namespace prefix "loc"

感謝,

回答

0

我強烈建議你使用WSDL到PHP發電機如PackageGenerator,它會減輕你的要求建設,你贏了不用想知道如何構建請求,這將是明確的。