关于 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 );
 
 
 
此处贴出我参考的文章的内容:
 

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服务端,则无需传二维数组。
 
其中原因不明,待查。。。。

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

  1. JAVA调用C语言写的SO文件

    JAVA调用C语言写的SO文件 因为工作需要写一份SO文件,作为手机硬件IC读卡和APK交互的桥梁,也就是中间件,看了网上有说到JNI接口技术实现,这里转载了一个实例 // 用JNI实现 // 实例: ...

  2. web service,soap ,http,tcp,udp

    webservice and soap  HTTP只负责把数据传送过去,不会管这个数据是XML.HTML.图片.文本文件或者别的什么.而SOAP协议则定义了怎么把一个对象变成XML文本,在远程如何调用 ...

  3. NSIS脚本调用C语言写的插件

    其实NSIS的官网已经提供了很多别人开发的插件了,今天需要用到GetVersion这个插件,这是不维护的插件了,不推荐用,但是由于现实中的问题,导致我不得不用这个插件. 所以就下载下来了. 下载下来之 ...

  4. Java 基于web service 暴露接口 供外部调用

    package cn.zr.out.outinterface; import java.text.SimpleDateFormat; import java.util.Date; import jav ...

  5. [ Web Service ] [ SOAP ] [ JSON ] [ XML ] 格式轉換

    JSON格式產生器_Demo JSON格式產生器_ObjGen - Live JSON Generator JSON格式整理_JSON Formatter & Validator Online ...

  6. .Net调用Java端带有WS-Security支持的Web Service各方案实战【转】

    原文:http://www.xuebuyuan.com/641669.html 到现在为止,我们AEP平台已经发布很长一段时间了,也有很多ISV接入并上线了,就语言而言,目前主要有三类:Java..N ...

  7. keil or c51 汇编调用c语言函数 容易忽视的问题

    最近,在用keil 写一个小程序时,想实践一下从汇编调用 C语言函数,我们都知道C语言调用汇编函数讨论得较多,但反过来,从汇编中调用C语言的函数未见深入分析:在开始的时候,还是忽视了一个问题,就是对现 ...

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

    本Guide利用Eclipse以及Ant建立一个简单的Web Service,以演示Web Service的基本开发过程: 1.系统条件: Eclipse Java EE IDE for Web De ...

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

    在Windows Phone项目中调用C语言写的DLL 最近接到一个需求,需要在WP里调用一个C语言写的DLL,并且说Android和iOS都可以,问我WP是否可以这样? 我说我调研一下,就有了下面的 ...

随机推荐

  1. 百度识图for windows phone 上线

    原文发布时间为:2013-07-04 -- 来源于本人的百度文章 [由搬家工具导入] 百度识图主要用于找女神,找男神,找美图,找宠物,找图文新闻,找相似图,找原图,还能鉴别头像照片真伪,免得被网络照片 ...

  2. Scala不使用null 而使用Option,None,Some的好处

    刚接触Scala时就很奇怪, 为什么Java已经有null了,却偏偏还要弄出个None 后来依然我行我素在Scala里使用null, 结果就是经常被NullPointerException折磨得阴魂不 ...

  3. Codeforces Gym100971 B.Derangement (IX Samara Regional Intercollegiate Programming Contest Russia, Samara, March 13)

    昨天训练打的Gym,今天写题解. 这个题就是输出的时候有点小问题,其他的都很简单. 代码: #include<iostream> #include<cstring> #incl ...

  4. 正确地使用GIT FORK

    摘自github官方网站,稍后我将抽空翻译. Fork a repo https://help.github.com/articles/fork-a-repo/ Syncing a fork http ...

  5. luogu P1260 工程规划(luogu wa)don't know way

    题目描述 造一幢大楼是一项艰巨的工程,它是由n个子任务构成的,给它们分别编号1,2,…,n(5≤n≤1000).由于对一些任务的起始条件有着严格的限制,所以每个任务的起始时间T1,T2,…,Tn并不是 ...

  6. Maven出现错误No plugin found for prefix 'jetty' in the current project and in the plugin groups的问题解决

    只需在maven的setting.xml文件上加入如下节点: <pluginGroups> <pluginGroup>org.mortbay.jetty</pluginG ...

  7. php设置报错级别

    ini_set("display_errors", "On");//若页面不报错的话,请设置php.ini 的display_errors 为 On error ...

  8. 我希望早几年知道的5个Unix命令

    使用*nix系统已经有一段时间了.但还是有一些命令是被我一直忽略的,真希望我能早几年发现这些命令. 1. man ascii 这个命令会打印出八进制.十六进制和十进制的ASCII码表.难以置信我是一个 ...

  9. (译)关于使用Eclipse Memory Analyzer的10点小技巧

    作者 Rave_Tian 2016.02.01 17:56* 字数 2988 阅读 520评论 0喜欢 0 分析和理解应用的内存使用情况是开发过程中一项不小的挑战.一个微小的逻辑错误可能会导致监听器没 ...

  10. git-ssh配置和使用

    https://segmentfault.com/a/1190000002645623 1.设置Git的user name和email:(如果是第一次的话) $ git config --global ...