Soap PHP WSDL XML格式

问题描述:

所以我在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"

感谢,

我强烈建议你使用WSDL到PHP发电机如PackageGenerator,它会减轻你的要求建设,你赢了不用想知道如何构建请求,这将是明确的。