PHP调用SOAP接口方式
最近调用第三方接口获取数据时,发现对方居然是所谓的soap接口,一脸懵逼。赶紧请教下老师(baidu),但是查找了不少资料,表情更深。没找到有用的信息,大多数都是在描述什么是SOAP,或一堆排版较乱的代码。
工作中用到,再去慢慢看理论不太现实。第一要务就是盘它,知道怎么调用,把功能跑起来,解决了眼下问题,再深入了解。
第三方接口文档:
接口:GetBusinessProducts 业务产品
参数列表:
userName为用户名;
password为密码;
resultType为数据格式类型,设置xml或json;
area为单位名称;
typeName为类型名称,现阶段有天气实况、预报解读分析和气象指数;
beginDate为开始时间,格式yyyy-MM-dd;
endDate为结束时间,格式yyyy-MM-dd
接口:GetChinaAllGuoJiaZhan 获取全国站信息
参数列表:
resultType为数据格式类型,设置xml或json;
接口:GetChinaGuoJiaZhanListByProvince 获取全国国家站信息
参数列表:
resultType为数据格式类型,设置xml或json;
arrProvince为省份名称数组,设置广西、浙江等;
接口:GetChinaGuoJiaZhanListByStationNum 获取全国国家站信息
参数列表:
resultType为数据格式类型,设置xml或json;
arrStationNum为国家站站号数组,设置53698等;
正确的调用方式:
// 访问路径(栗子)
$url = 'http://lizi.com/ShuJuHuanJing.asmx?WSDL';
// php直接调用此扩展对象
$client = new \SoapClient($url);
// 这就是上述文档中的各个参数
$params = [
'userName' => '账号',
'password' => '密码',
'resultType' => 'xml',
'beginDate' => '2019-09-10',
'endDate' => '2019-09-18',
];
// 关键就是调用方式
// $client->文档给的接口名
// 返回一般是对象
$response = $client->GetBusinessProducts($params);
// 结果一般还需一步: 结果->接口
$result = $response->GetBusinessProducts;
// 返回值是请求的结果类型xml或json等,利用php自带对象或函数转换一下即可
得到想要的数据,继续完成工作。