php使用WS-Security调用java接口
来源:互联网 发布:网络改编歌曲 编辑:程序博客网 时间:2024/05/18 10:45
因为项目要做为第三方应用接入其他平台,需要调用对方的java获取数据,于是对方给出web service接口文档,我方调用。
对方考虑到安全因素,需要WS的客户端在调用服务的时候,请求头需要包含一个验证信息,否则服务将不可访问。以前都是使用nusoap调用接口,但是发现不能封装请求头,于是转而采取php自带的soap接口,当然了,前提是要开启该扩展。由于以前没有这方面调用的经验,碰到一堆问题,其中遇到最多的是这个错误。
ns1:InvalidSecurity An error was discovered processing the header
后来google下,发现github的一个例子个给了我灵感,于是奋笔疾书,写了出来,下面贴出代码,以供参考。
public function ws() { $xml = ' <wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"> <wsse:UsernameToken> <wsse:Username>admin</wsse:Username> <wsse:Password>PasswordText</wsse:Password> </wsse:UsernameToken> </wsse:Security>'; $header = new SoapHeader('http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd', 'CallbackHandler', new SoapVar($xml, XSD_ANYXML), TRUE); $client = new SoapClient($wsdl); $client->__setSoapHeaders(array($header));}
【updated】
今天又遇到了一个问题
SoapFault exception: [soap:Server] Fault occurred while processing.
原来以前传参都是传一个参数,今天得有两个参数,和对方联调了下,对方显示的log里老是接收到一个,我就纳闷了,google了好久,看了许多外文资料,都一样啊,怎么会了,后来在贴吧里问了下,一个回答提醒了我,我打开wsdl,找到那个接口,看了下参数,发现是参数写错了,但是一开始确定参数时,对方说是那个啊,真郁闷,看来以后不能口头的,得有文档。
// 两个参数$info = = turnObjectToArray($this->client->__call('checkUser', array(array('username' => 'username', 'pwd' => 'password'))));// 没有参数$info = turnObjectToArray($this->client->__call('getGrades', array()));// 一个参数$info = turnObjectToArray($this->client->__call('getUserTeachingClasses', array(array('userId' => $tv['id']))));
由于这种返回来的都是object对象,因此简单的封装了个对象转数组的方法
// 将object转为arrayfunction turnObjectToArray($obj) { $obj = is_object($obj) ? get_object_vars($obj): $obj; foreach ($obj as $key => &$value) { if (is_object($value) || is_array($value)) { $value = turnObjectToArray($value); } } return $obj;}
0 0
- php使用WS-Security调用java接口
- WSF/PHP调用带有WS-Security支持的Web Service时的注意事项
- 使用JAX-WS调用WebService的短信接口
- 使用wsimport和JAX-WS调用Web Service接口
- 四、调用网上WS接口
- java 调用ws 方式
- java调用ws服务
- .Net调用Java端带有WS-Security支持的Web Service各方案实战
- WS-Security
- 编写一个使用WS-Security的WebMethod
- 使用MTOM传输附件+WS-Security
- 使用 Spring4 + CXF3 + WS-Security 开发 WebService
- Java Web 服务: Axis2 WS-Security 基础
- php调用java webservice接口
- Java WS和C#调用
- JAVA调用.NET的WS
- .Net客户端对WebService的调用(含WS-Security)
- java使用httpClient调用接口
- 话说人民币要贬值
- UVa 10881 - Piotr's Ants
- hdu 2096 小明A+B 偶尔看到,顺便做做,没想到这么简单
- android仿微信通讯录字母索引控件
- VS10中有关ClientID属性的小BUG
- php使用WS-Security调用java接口
- dfwerwre
- Android学习笔记__1__Android体系架构
- Linux下查看某个进程的线程数量
- hadoop hdfs常用命令
- cmd命令整理(待完善)
- /dev/zero是什么(详解)
- 如何判断自己是否具有成为一名优秀程序员的潜质
- hdoj1019--Least Common Multiple