关于 php 调用 其他语言写的Web Service SOAP 接口的参数传递问题

关于 php 调用 其他语言写的Web Service SOAP 接口的参数传递问题,有需要的朋友可以参考下。

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);

if ($client->fault) {
//成功
} 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 );

此处贴出我参考的文章的内容:

链接: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服务端,则无需传二维数组。

其中原因不明,待查。。。。

原文地址:https://www.cnblogs.com/xiaoleiel/p/8324293.html

时间: 2024-11-06 20:35:47

关于 php 调用 其他语言写的Web Service SOAP 接口的参数传递问题的相关文章

JAVA调用C语言写的SO文件

JAVA调用C语言写的SO文件 因为工作需要写一份SO文件,作为手机硬件IC读卡和APK交互的桥梁,也就是中间件,看了网上有说到JNI接口技术实现,这里转载了一个实例 1 // 用JNI实现 2 // 实例: 3 4 // 创建HelloWorld.java 5 class HelloWorld 6 { 7 private native void print(); 8 public static void main(String[] args) 9 { 10 new HelloWorld().p

调用手机归属地的Web Service

调用手机归属地的Web Service            i.创建项目                项目名称:phoneclient            ii.创建本地的wsdl文件                文件名称:phone.wsdl                访问:http://webservice.webxml.com.cn/WebServices/MobileCodeWS.asmx?wsdl会看到文件,然后查看源码                保存到本地.     

java中调用kettle作业以及生成web service 接口

第一步:(前提将kett中lib下的所有jar包拷贝到java项目lib目录)创建并连接资源库,如果只用这一个工作空间,可以将此段代码放入静态代码块,代码如下: KettleEnvironment.init(); //创建资源库对象,此时的对象还是一个空对象 KettleDatabaseRepository repository = new KettleDatabaseRepository(); //创建资源库数据库对象,类似我们在spoon里面创建资源库 //(数据库连接名称,数据库类型,连接

web service,soap ,http,tcp,udp

webservice and soap  HTTP只负责把数据传送过去,不会管这个数据是XML.HTML.图片.文本文件或者别的什么.而SOAP协议则定义了怎么把一个对象变成XML文本,在远程如何调用等,怎么能够混为一谈.                 这样说两种协议:     HTTP就是邮局的协议,他们规定了你的信封要怎么写,要贴多少邮票等....         SOAP就是你们之间交流的协议,负责把你所需要表达的意思写在信纸上,同时也负责让对方能够看得懂你的信. Web service

C#代码 请求web service soap类型服务(wsdl文件)

1.  首先搞到wsdl文件(客户提供的地址下载http://10.48.36.6:8080/ShuJuHuanJing.asmx?WSDL)网站中打开,复制到txt文件中存储为wsdlModel.wsdl.注意后缀. 2. 打开VS新建一个cs类用于存储转换wsdl文件 3. 在程序中打开VS中的命令行 4.  从wsdl路径下载至cs文件   输入命令:wsdl /language:c# /n:CHEER.PresentationLayer /out:文件存储路径 http://10.48.

如何用纯文本方式(XML)+HTTP协议调用Workday的web service?

我们知道,Workday系统本身很复杂,其发布的web服务(web service)也很多,而且其中的Web 服务(web service)中定义的Schema也很复杂.如果用AXIS或者XFire生成存根代码调用其相应模块的web service,比如Human Resource模块,也可以,但是生成的存根代码比较复杂,而且Workday的web服务本身也在不断的升级过程中,在升级的过程中,其Schema的信息也在不断变化和调整过程中,那么有没有一种以不变应万变的方式,答案是肯定的.那就是通过

在Windows Phone项目中调用C语言DLL

在Windows Phone项目中调用C语言写的DLL 最近接到一个需求,需要在WP里调用一个C语言写的DLL,并且说Android和iOS都可以,问我WP是否可以这样? 我说我调研一下,就有了下面的文章. 在传统C# WinForm 里调用Win32 DLL都不容易(可能用惯了C#),要用P/Invoke,然后DllImport什么什么,那WP里不是更麻烦? 先看看网上有没有可用的文章,结果还真找到devdiv中的文章,但其中有两处错误,所以我fix bug并且整理一下,然后展示给大家. 1.

【Java学习笔记】如何写一个简单的Web Service

本Guide利用Eclipse以及Ant建立一个简单的Web Service,以演示Web Service的基本开发过程: 1.系统条件: Eclipse Java EE IDE for Web Developers Java SE 6 Windows XP 2.基本环境搭建: 1)Java SE6 JDK的安装:下载Java SE6 JDK,双击,安装默认选项进行安装即可. 2)Eclipse的安装与配置: 安装时直接解压.     配置处有两点,Window>Preferences>Jav

翻译-使用Spring调用SOAP Web Service

原文链接: http://spring.io/guides/gs/consuming-web-service/ 调用SOAP web service 本指南将指导你使用Spring调用一个基于SOAP的web service的整个过程. 指南内容 你将构建一个客户端,使用SOAP用来从远端的基于WSDL的web service获取天气数据.请访问http://wiki.cdyne.com/index.php/CDYNE_Weather进一步获取该天气服务的信息. 该服务根据邮编返回天气预测.你可