Java写 soapclient,PHP通过SoapClient调用Java发布的WebService
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
小奋斗文章
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Java写 soapclient,PHP通过SoapClient调用Java发布的WebService相关推荐
- 用JAVA写一个画图小程序(JAVA 大作业)
第一次写博客 且是稍微大点的程序 看看就行 重新写的在这,更加清晰明了:点击进入:用JAVA写一个画图小程序(JAVA 大作业)重排版本 设计思路 首先我直接去了Windows自带画图程序去实践模拟, ...
- java使用axis调用.net发布的webservice接口返回对象类型
本人在java中axis-1.4 调用 .net发布的webService接口 有问题欢迎各路大神讨论 !!! 1.1 基本类型 1.2 对象类型 1.3复杂对象类型(对象类中嵌套对象类) 返回基本类 ...
- oracle 调用java 类_oracle数据库PL SQL调用Java类程序代码
作为JAVA程序员,对ORACLE的javasource一直是想找个机会下手的.呵呵!风高月夜,此时正下手之机. Oracle有提供一个叫"外部例程"来实现与其他编程语言的访问.例 ...
- java 写文件 属性吗_使用JAVA读写Properties属性文件
自己定义一个属性文件:例如prop.properties baseFilePath=D\:/kuanter/resource tesx=abcd 我们要做的第一步就是要将文件读取到Properties ...
- 用java写的游戏you_关于用Java写的贪吃蛇游戏的一些感想
学习Java有那么一个月了,兴趣还是挺高的.然而最近老师布置的一个迷宫问题,着实让我头疼了一两个礼拜,以至于身心疲惫,困扰不安.无奈,暂且先放下这个迷宫问题,写个简单点的贪吃蛇程序,以此来提高低落的情 ...
- java写网页_初次尝试通过java写简单网站
一.安装Tomcat及配置 1.下载Tomcat 2.配置环境变量 新建系统变量如下图所示 修改path:变量末尾添加(%CATALINA_HOME%\bin) 3.查询配置是否成功 这样显示表示已经 ...
- java 写的星际争霸_用java写星际争霸的ai
一直有这个想法很久了.以前也知道可以用BWAPI这个API写星际争霸的ai.但是直接用那个的话一直没调试好,各种版本都搭配不好然后导致星际崩溃,C++又不是很懂只得作罢. 幸好最近发现了这个网站:ht ...
- java写一个登录系统_用java写一个用户登陆界面
一.课堂测试源代码及其结果截图 用java的swing写一个用户登录界面,采用网格布局.源代码如下: /** * */ package LiuLijia; import java.awt.CardLa ...
- python写网站和java写网站的区别-为什么说Java和Python现阶段并不适合普通网站建设...
经过20多年的发展,网站开发技术已经非常成熟,用于网站制作的程序语言也有很多.常见的当然是php和asp.net,特别是php程序语言,虽然其已经有很多年历史也历经多次迭代升级,但在凭借其开源.轻巧等 ...
- 用java写一个折半查找_用Java写一个折半查找。
import java.util.Comparator; public class MyUtil { public static > int binarySearch(T[] x, T key) ...
最新文章
- jdbctemplate oracle xml文件,Spring JDBCTemplate使用JNDI数据源
- 成功解决AttributeError: module 'tensorflow.nn.rnn_cell' has no attribute 'linear'
- Express中间件的应用-路由保护(登录限制)、网站维护、页面404
- Angular单元测试里pipe的mock设计
- phpstorm9 增加对.vue的支持
- mysql 5.7.13 安装配置方法图文教程(linux)
- RocketMQ(一)——发展历程及基本概念
- 【POJ2406】Power Strings(KMP)
- 第7集 驱动与电气原理图绘制
- Creo 6.0软件安装教程|兼容WIN10
- C# SplitContainer控件实现折叠展开面板
- autoit脚本实现电脑加域,退域,重加域
- 暑期实践第二十九天 2022-8-1
- html 空格怎么打,空白空格怎么打?
- Ubuntu 16.04 安装wine-qq 7.8 并解决不能输入中文问题
- sql中将字符串转换为decimal
- 助力假发线上销售 帕克西3D发型虚拟试戴接入电商平台使用
- C++中局部变量和全局变量的存储位置和内存回收机制
- 快排为什么一定要从右边开始?
- weblogic启动错误 ClassNotFoundException: com.bea.wcp.sip.management.descriptor.beans.SipServerBean
热门文章
- Lillian Shao用十年经验解读中国“公有云”落地为什么这么难?
- Java接口方法的三种类型
- vue 获取上一年今年下一年 上一月本月下一月 昨天今天明天
- (2020)指代消解ontoNotes_Release_5.0处理详细流程
- docker push 镜像 An image does not exist locally with the tag
- Springboot-jar包瘦身部署
- 技能梳理32@电源防反接电路+光耦隔离电路+串口磁耦隔离电路
- 线性LED驱动器行业调研报告 - 市场现状分析与发展前景预测
- 机器人课堂教学和算法编程更有趣的想法与尝试
- UR5协作机器人实现了多台机床管理和焊接任务的自动化