繁体   English   中英

Soap PHP WSDL XML格式

[英]Soap PHP WSDL XML formatting

因此,我在PHP中使用Soap客户端,并且尝试在WSDL上发出请求。 我尝试具有特定的输出,但似乎与我尝试的工作有点不同。 也许我做错了。 我对WSDL有点陌生。

这是我想要的结果:

<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异常:[客户端] SOAP错误:编码:对象没有'sendmessage'属性”;

编辑:通过在某些帖子上获得灵感在此基础上进行了一些改进

现在是我的代码:

$_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>

但我收到以下答复:

意外的子元素sendSms

“ loc:”是否必须解决此问题? 因为当我将其添加到原始xml中时,它说

未声明的名称空间前缀“ loc”

谢谢,

我强烈建议您使用WSDL到PHP的生成器,例如PackageGenerator ,它将简化您的请求构造,因此您不必怀疑如何构造请求,这很清楚。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM