大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。
Jetbrains全家桶1年46,售后保障稳定
php通过接口调用数据时,长用的为:http和webservice两种方法。
http 是指:接口端提供http链接,将数据以json或XML格式输出到网页中。php调用端通过file_get_contents或curl方法来调用,GET/POST方式来传参。
webservice是指:通过soap读写接口,现在着重来介绍一下这种方法。
php5以后提供了原生的soap方法:SoapClient,需要开启php的php-SOAP服务。如果限于服务器不能开启soap,也可以用 nusoap。nusoap是一个外部类,需要引入后才可调用。
现在介绍一下,用php soap 模块,调用webservice:
以下为最简洁的调用方法:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
$url = http://xxx.xxx.xx.xx/WebService/service/WebService?wsdl;
//链接服务器端
$client = new SoapClient($url);
//调用提供的方法
$paras = array(‘arg0’=>array(‘id’=>”33234″));
$aryResult=$client->querySherry($paras);
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
说明可能遇到的问题:
1、获取服务器上提供的可调用方法
//获取服务器上提供的可调用方法
print_r($client->__getFunctions ());
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2、获取服务器上提供的数据类型
//获取服务器上的数据类型
print_r($client->__getTypes());
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
升级版,标注颜色:
echo ‘
';
echo ‘
Types:
‘;
$types = $client->__getTypes();
foreach ($types as $type) {
$type = preg_replace(
array(‘/(\w+) ([a-zA-Z0-9]+)/’, ‘/\n /’),
array(‘${1} ${2}’, “\n\t”),
$type
);
echo $type;
echo “\n\n”;
}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
输出结果中,方法里的参数即为参数名,例如:
struct querySherry { SherryH5Request arg0; }
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
其中”querySherry”方法中,参数为 arg0
3、SoapClient 的参数:
默认情况下,SoapClient不需要链接外的任何参数。但是,有时需要设置一些内容:
例如:
$client = new SoapClient(“SoapClient”,
array(
‘soap_version’=>SOAP_1_2, //设置soap版本,默认为:SOAP_1_1
‘trace’ => 1, //跟踪异常
‘cache_wsdl’=>WSDL_CACHE_NONE, //禁止缓存服务器 wsdl
‘location’=>”,
‘uri’=>”,
‘login’=>”,
‘password’=>”,
‘encoding’=>’UTF-8’
));
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
更多参数介绍,请参见: PHP开发手册 SoapClient::SoapClient
4、无法传递参数,服务器端接收到的参数为null:
php通过soap向接口端传参时,是通过 array 来操作的。例如:
$paras = array(array(‘arg0’=>array(‘id’=>”33234″)));
$aryResult=$client->__soapCall(‘querySherry’,$paras);
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
数据一定要放在array里提交,以上参数键值的说明:
arg0:通过 __getTypes 获取的参数名:
id : 接口端提供的键值名。
听java开发说,java调用时,无需 arg0 包裹。
以下为同类文章:
http://www.yunxiu.org/blog/article/5534.htm
http://phpxiaoxin.iteye.com/blog/1555715
http://www.cnblogs.com/smallmuda/archive/2010/10/12/1848700.html
http://www.cnblogs.com/wuhenke/archive/2010/09/30/1839424.html
小奋斗文章
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/220325.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...