关于 php 调用 其他语言写的Web Service SOAP 接口的参数传递问题
来源:互联网 发布:魅族微信无法连接网络 编辑:程序博客网 时间:2024/05/16 15:57
php调用java写的soap接口经验:
场景一:
java是以数组的形式接收参数的,我使用的方法如下:
方法一:
require_once ROOT_PATH . '/libraries/nusoap/nusoap.php';//引入nusoap类库文件
$client = new nusoap_client("$WSDL_URL",true);
$client->decode_utf8 = false;
$client->soap_defencoding = "UTF-8";//java接收是是使用utf-8的,设置为utf-8,防止出现乱码
$arr =array("param1"=>$param1,"param2"=>$param2);//传递的参数
$result = $client->call('Reserve_Save2',$arr);
$client = new nusoap_client("$WSDL_URL",true);
$client->decode_utf8 = false;
$client->soap_defencoding = "UTF-8";//java接收是是使用utf-8的,设置为utf-8,防止出现乱码
$arr =array("param1"=>$param1,"param2"=>$param2);//传递的参数
$result = $client->call('Reserve_Save2',$arr);
if ($client->fault) {
//成功
} else {
//成功
} else {
//失败
}
此种情景也可以使用以下三种方法调用:
$client = new SoapClient($WSDL_URL);
方法二、$client->FunctionName($param1,$param2);
方法三、$client->__soapCall("FunctionName",array($param1,$param2));
方法四、$client->__soapCall("FunctionName",array("param1"=>$param1,"param2"=>$param2));
场景二:
java是以字符串的形式接收参数的,方法一调试不成功,经历了很多尝试之后,找到这篇文章(http://blog.163.com/shihua_23/blog/static/2333759420108213340651/),尝试了里面的方法,终于成功了,顿时泪流满面,非常感谢作者。方法如下:
方法五:
$soap = new SoapClient ( "$WSDL_URL" );
$param = array(array("data"=>"<Request><cardtype>15</cardtype><cardnumber>88888888</cardnumber><telephone>18511111111</telephone><name>小星星</name></Request>"));//注:此处必须是二维数组,且第二维的键值必须是data,value值是要传递的xml结构的字符串。
$result = $soap->__soapCall ( 'FunctionName', $param );
方法六:
$text3 = "<tem:GetAllPurPoseData>
<!--Optional:-->
<tem:Xml><![CDATA[<DocumentElement>
<DataTable>
<MethodName>cx</MethodName>
<OperatorID></OperatorID>
<AccessKey>D50CE824CE3DC47F86</AccessKey>
<InPatientNo>755072</InPatientNo>
<BeginDate>2014-11-29</BeginDate>
</DataTable>
</DocumentElement>]]></tem:Xml>
</tem:GetAllPurPoseData>";
//注:此处传递参数的时候要带上“<tem:GetAllPurPoseData><!--Optional:--><tem:Xml>...</tem:Xml</tem:GetAllPurPoseData>”这些内容,这是由接口服务端决定的
$client = new nusoap_client(url,true);
$client->soap_defencoding = 'utf-8';
$client->decode_utf8 = false;
$client->xml_encoding = 'utf-8';
$result =$client->call(functionname,$text3);
//echo '<pre>' . htmlspecialchars($client->request, ENT_QUOTES) . '</pre>';//可输出做调试
//echo '<h2>Response</h2>';
//echo '<pre>' . htmlspecialchars($client->response, ENT_QUOTES) . '</pre>';//可输出做调试
此处贴出我参考的文章的内容:
链接:http://blog.163.com/shihua_23/blog/static/2333759420108213340651/
php在调用C#写的SOAP接口方法需要传递参数时,以下三种方法均会传递失败:
$client = new SoapClient($WSDL_URL);
1、$client->FunctionName($param1,$param2);
2、$client->__soapCall("FunctionName",array($param1,$param2));
3、$client->__soapCall("FunctionName",array("param1"=>$param1,"param2"=>$param2));
正确的方法是将参数作为二维数组来传,如下所示:
$param_ary = array( array("param1"=>$param1,"param2"=>$param2) );
$client->__soapCall("FunctionName",$param_ary);
若php调用php自己写的SOAP服务端,则无需传二维数组。
其中原因不明,待查。。。。
0 0
- 关于 php 调用 其他语言写的Web Service SOAP 接口的参数传递问题
- java如何调用其他系统的web service接口
- 关于PHP传递参数的问题
- 关于C语言传递参数的问题
- SOAP的接口调用
- 关于php和C语言接口的结构传递问题,udp,tcp通信
- Java CXF调用PHP[其它语言]的Web Service
- web service(SOAP)与HTTP接口的区别
- web service(SOAP)与HTTP接口的区别
- web service(SOAP)与HTTP接口的区别
- Web Service (SOAP)和HTTP接口的区别
- web service(SOAP)与HTTP接口的区别
- 解决php soap webservice 用c++ soap调用的问题
- php调用其他系统的接口整理
- RO12 - RemObjects SDK调用已存在的SOAP Web Service
- c#调用delphi编写的SOAP Web Service(1)
- c#调用delphi编写的SOAP Web Service(2)
- 关于SOAPpy传递对象参数调用WebService的问题总结
- VC与Matlab混合编程
- opencv1.0人脸识别代码解析
- word alt x unicode
- 如何使用UIAutomation进行iOS 自动化测试(Part I)
- Eclipse中git插件导入远程库和上传项目源码到远程库
- 关于 php 调用 其他语言写的Web Service SOAP 接口的参数传递问题
- 缓存机制
- Ubuntu操作系统下rbenv、ruby、rails开发环境搭建
- Unity 技巧
- 如何使用UIAutomation进行iOS自动化测试(Part II)
- Openvswtich 学习笔记
- 如何在C和C++中产生随机数
- 面试常见问题
- __attribute__ 你知多少?