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相关推荐

  1. 用JAVA写一个画图小程序(JAVA 大作业)

    第一次写博客 且是稍微大点的程序 看看就行 重新写的在这,更加清晰明了:点击进入:用JAVA写一个画图小程序(JAVA 大作业)重排版本 设计思路 首先我直接去了Windows自带画图程序去实践模拟, ...

  2. java使用axis调用.net发布的webservice接口返回对象类型

    本人在java中axis-1.4 调用 .net发布的webService接口 有问题欢迎各路大神讨论 !!! 1.1 基本类型 1.2 对象类型 1.3复杂对象类型(对象类中嵌套对象类) 返回基本类 ...

  3. oracle 调用java 类_oracle数据库PL SQL调用Java类程序代码

    作为JAVA程序员,对ORACLE的javasource一直是想找个机会下手的.呵呵!风高月夜,此时正下手之机. Oracle有提供一个叫"外部例程"来实现与其他编程语言的访问.例 ...

  4. java 写文件 属性吗_使用JAVA读写Properties属性文件

    自己定义一个属性文件:例如prop.properties baseFilePath=D\:/kuanter/resource tesx=abcd 我们要做的第一步就是要将文件读取到Properties ...

  5. 用java写的游戏you_关于用Java写的贪吃蛇游戏的一些感想

    学习Java有那么一个月了,兴趣还是挺高的.然而最近老师布置的一个迷宫问题,着实让我头疼了一两个礼拜,以至于身心疲惫,困扰不安.无奈,暂且先放下这个迷宫问题,写个简单点的贪吃蛇程序,以此来提高低落的情 ...

  6. java写网页_初次尝试通过java写简单网站

    一.安装Tomcat及配置 1.下载Tomcat 2.配置环境变量 新建系统变量如下图所示 修改path:变量末尾添加(%CATALINA_HOME%\bin) 3.查询配置是否成功 这样显示表示已经 ...

  7. java 写的星际争霸_用java写星际争霸的ai

    一直有这个想法很久了.以前也知道可以用BWAPI这个API写星际争霸的ai.但是直接用那个的话一直没调试好,各种版本都搭配不好然后导致星际崩溃,C++又不是很懂只得作罢. 幸好最近发现了这个网站:ht ...

  8. java写一个登录系统_用java写一个用户登陆界面

    一.课堂测试源代码及其结果截图 用java的swing写一个用户登录界面,采用网格布局.源代码如下: /** * */ package LiuLijia; import java.awt.CardLa ...

  9. python写网站和java写网站的区别-为什么说Java和Python现阶段并不适合普通网站建设...

    经过20多年的发展,网站开发技术已经非常成熟,用于网站制作的程序语言也有很多.常见的当然是php和asp.net,特别是php程序语言,虽然其已经有很多年历史也历经多次迭代升级,但在凭借其开源.轻巧等 ...

  10. 用java写一个折半查找_用Java写一个折半查找。

    import java.util.Comparator; public class MyUtil { public static > int binarySearch(T[] x, T key) ...

最新文章

  1. jdbctemplate oracle xml文件,Spring JDBCTemplate使用JNDI数据源
  2. 成功解决AttributeError: module 'tensorflow.nn.rnn_cell' has no attribute 'linear'
  3. Express中间件的应用-路由保护(登录限制)、网站维护、页面404
  4. Angular单元测试里pipe的mock设计
  5. phpstorm9 增加对.vue的支持
  6. mysql 5.7.13 安装配置方法图文教程(linux)
  7. RocketMQ(一)——发展历程及基本概念
  8. 【POJ2406】Power Strings(KMP)
  9. 第7集 驱动与电气原理图绘制
  10. Creo 6.0软件安装教程|兼容WIN10
  11. C# SplitContainer控件实现折叠展开面板
  12. autoit脚本实现电脑加域,退域,重加域
  13. 暑期实践第二十九天 2022-8-1
  14. html 空格怎么打,空白空格怎么打?
  15. Ubuntu 16.04 安装wine-qq 7.8 并解决不能输入中文问题
  16. sql中将字符串转换为decimal
  17. 助力假发线上销售 帕克西3D发型虚拟试戴接入电商平台使用
  18. C++中局部变量和全局变量的存储位置和内存回收机制
  19. 快排为什么一定要从右边开始?
  20. weblogic启动错误 ClassNotFoundException: com.bea.wcp.sip.management.descriptor.beans.SipServerBean

热门文章

  1. Lillian Shao用十年经验解读中国“公有云”落地为什么这么难?
  2. Java接口方法的三种类型
  3. vue 获取上一年今年下一年 上一月本月下一月 昨天今天明天
  4. (2020)指代消解ontoNotes_Release_5.0处理详细流程
  5. docker push 镜像 An image does not exist locally with the tag
  6. Springboot-jar包瘦身部署
  7. 技能梳理32@电源防反接电路+光耦隔离电路+串口磁耦隔离电路
  8. 线性LED驱动器行业调研报告 - 市场现状分析与发展前景预测
  9. 机器人课堂教学和算法编程更有趣的想法与尝试
  10. UR5协作机器人实现了多台机床管理和焊接任务的自动化