Java写 soapclient,PHP通过SoapClient调用Java发布的WebService

Java写 soapclient,PHP通过SoapClient调用Java发布的WebServicephp通过接口调用数据时,长用的为:http和webservice两种方法。http是指:接口端提供http链接,将数据以json或XML格式输出到网页中。php调用端通过file_get_contents或curl方法来调用,GET/POST方式来传参。webservice是指:通过soap读写接口,现在着重来介绍一下这种方法。php5以后提供了原生的soap方法:SoapClient,需要开…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新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 ‘

';

Jetbrains全家桶1年46,售后保障稳定

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

小奋斗文章

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/220325.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 动态规划:最长上升子序列(二分算法 nlogn)「建议收藏」

    动态规划:最长上升子序列(二分算法 nlogn)「建议收藏」解题心得:1、在数据量比较大的时候n^2会明显超时,所以可以使用nlogn的算法,此算法少了双重循环,用的lower_bound(二分法)。2、lis中的数字并没有意义,仅仅是找到最小点lis[0]和最大点lis[len],其中,在大于lis[len]时len++,在小于lis[len]时可以将arr[i]在lis中的数进行替换掉。所以此算法主要是在不停的找最合适的起点和最合适的终点。

    2022年6月11日
    33
  • CentOS 7系统离线安装gcc,gcc-c++,让你摆脱联网装不了的困惑!

    CentOS 7系统离线安装gcc,gcc-c++,让你摆脱联网装不了的困惑!我的就是CentOs7系统,需要装一个Nginx服务器的时候,死活都装不上运行环境gcc,gcc-c++,一直纠结了几天,后来我睡觉的时候突然一个灵感来了,就继续查资料,如果缺少依赖包,那么就去装依赖包,手动安装或者离线安装都可以。第二天上班的时候我就开始查网上查资料,果然有这种解决办法,并且还有各个依赖包都抽离出来了,感谢各位大佬的分享,我写这个不是为了宣传什么,…

    2022年5月9日
    37
  • 使用cookie登录百度网盘(网站使用cookie)

    cookies2.txt为存放cookie字符串的文件。cookie字符串获取方式1.可以通过手动的方式去取,比如登录之后在console里面执行document.cookie即可获得2.在application里面查看cookie的值3.通过webdriver.Chrome(…)创建出来的实例,调用get_cookies()就可以获取到…

    2022年4月10日
    520
  • 金蝶K3 WISE所有单据数据库内码及描述对照表[通俗易懂]

    金蝶K3 WISE所有单据数据库内码及描述对照表[通俗易懂]FTableIDFTableNameFDescriptionFTableNote0t_VoucherGroup凭证字表凭证的收付转等分类字1t_VoucherEntry凭证分录表凭证分录2t_Voucher凭证表凭证3t_User系统用户信息表系统用户信息表4t…

    2022年9月21日
    0
  • futex简介_fut是什么牌子

    futex简介_fut是什么牌子找到一篇很好的文章,讲得深入浅出;貌似原网站也很不错。转载自http://linuxperf.com/?p=23futex(fastuserspacemutex)是Linux的一个基础构件,可以用来构建各种更高级别的同步机制,比如锁或者信号量等等,POSIX信号量就是基于futex构建的。大多数时候编写应用程序并不需要直接使用futex,一般用基于它所实现的系统库就够了。futex的性能非常优异,它是怎样做到的呢?这要从它的设计思想谈起。传统的SystemVIPC(interproces

    2022年9月21日
    0
  • 快速排序算法——C/C++

    快速排序算法——C/C++快速排序1、算法思想快速排序的基本思想:通过一趟排序将待排记录分隔成独立的两部分,其中一部分记录的关键字均比另一部分的关键字小,则可分别对这两部分记录继续进行排序,以达到整个序列有序。2、实现原理2.1、设置两个变量low、high,排序开始时:low=0,high=size-1。2.2、整个数组找基准正确位置,所有元素比基准值小的摆放在基准前面,所有元素比基准值大的摆在基准的后面…

    2022年6月24日
    24

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号