PHP-php 调用 webservice

发布于 2017-01-04 16:12:02 字数 692 浏览 1312 评论 1

公网上有个手机号码归属地查询的 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

灵芸 2017-05-09 20:08:29

首先需要学会如何调试 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:山东 淄博 山东移动全球通卡" }

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文