PHP-php 调用 webservice
公网上有个手机号码归属地查询的 WebService 用 php 调用时发现有个问题
原始连接:http://webservice.webxml.com.cn/WebServices/MobileCodeWS.asmx?op=getMobileCodeInfo
通过添加 mobileCode 即可进行查询,于是编写的 php 客户端为:
<?php
$soap = new SoapClient('http://webservice.webxml.com.cn/WebServices/MobileCodeWS.asmx?wsdl');
$ret1 = $soap->getMobileCodeInfo('15165337786', '');
$ret2 = $soap->__soapCall('getMobileCodeInfo', array('mobileCode' => '15165337786', 'userID' => ''));
var_dump($ret1);
var_dump($ret2);
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
首先需要学会如何调试 SOAP流,其实很简单,SoapClient 构造方法的第二个参数为数组,可以设置很多选项,比如调试的话就用到了trace。 那么就使用这个方法测试下你写的,如下:
$soap = new SoapClient('http://webservice.webxml.com.cn/WebServices/MobileCodeWS.asmx?wsdl',array('trace'=>1));
$ret1 = $soap->getMobileCodeInfo('15165337786', '');
//输出请求和响应
echo "Request :", htmlspecialchars($soap->__getLastRequest()),"<hr>";
echo "Response :", htmlspecialchars($soap->__getLastResponse());
通过请求发现,xml其中有一个空的节点 <param1></param1> 这个本来是应该传递getMobileCodeInfo 方法的参数的,但是却没传递。。
然后看了你连接给出的 SOAP 请求和响应示例 发现 正确的请求参数为:
<mobileCode>string</mobileCode>
<userID>string</userID>
很明显是自己用法错误。
那么正确的用法为:
$soap = new SoapClient('http://webservice.webxml.com.cn/WebServices/MobileCodeWS.asmx?wsdl');
$ret1 = $soap->getMobileCodeInfo(array('mobileCode'=>'15165337786','userID'=>''));
var_dump($ret1);
output : object(stdClass)#2 (1) { ["getMobileCodeInfoResult"]=> string(52) "15165337786:山东 淄博 山东移动全球通卡" }