[英]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.