Axis2 java调用.net webservice接口的问题(郑州就维)
- 这是一个古老的问题,古老到从我若干年前遇到这样的问题就是一个解决之道:反复尝试。其实标准是什么,标准就是一个束缚,一种按既定规则的束缚,错点点,你的调用就可能不成功,不成功后你要花费大量的力气查找原因和错误,差异很多帖子,查找相似的地方,Webservice的实现不同,Soap,CXF,Axis等,每种工具都有指定的方式,刚开始尝试Soap发现这个根本没合适的包进行调用,也是IBM比较老的jar,2001年写的比较复杂,我对比较复杂的东西向来不感兴趣,因为太复杂我也搞不懂。索性用Axis2,在调用之前你要知道soap的两个协议版本1.1,1.2是不太一样的。
问题一:org.apache.axis2.AxisFault: 服务器未能识别 HTTP 头 SOAPAction 的值
这个错误错误查了好久,最后发现对方给的资料里面忘记给命名空间地址了,我去真是头疼,注意的是需要加方法名称
- http://tempuri.org/GetSign
问题二:org.apache.axis2.AxisFault: 服务器无法处理请求。 ---> 未将对象引用设置到对象的实例。
这个错误,也是满天飞的帖子其实是一个很小的问题,反斜杠
- OMNamespace omNs = fac.createOMNamespace("http://tempuri.org/", "");
标准吧,只要错那么点点,你就别想调通了,我把整个代码示例贴到下面:
- import org.apache.axiom.om.OMAbstractFactory;
- import org.apache.axiom.om.OMElement;
- import org.apache.axiom.om.OMFactory;
- import org.apache.axiom.om.OMNamespace;
- import org.apache.axis2.AxisFault;
- import org.apache.axis2.addressing.EndpointReference;
- import org.apache.axis2.client.Options;
- import org.apache.axis2.client.ServiceClient;
- import org.apache.axis2.transport.http.HTTPConstants;
- public class SoapAxis {
- private static EndpointReference targetEPR = new EndpointReference("http://192.168.0.185/OnlinePaywebservice/platformws.asmx");
- public static void main(String[] args) {
- Options options = new Options();
- options.setAction("http://tempuri.org/GetSign");// 调用接口方法
- options.setTo(targetEPR);
- options.setProperty(HTTPConstants.CHUNKED, "false");//设置不受限制.
- ServiceClient sender = null;
- try {
- sender = new ServiceClient();
- sender.setOptions(options);
- OMFactory fac = OMAbstractFactory.getOMFactory();
- OMNamespace omNs = fac.createOMNamespace("http://tempuri.org/", "");
- OMElement method = fac.createOMElement("GetSign", omNs);
- OMElement name = fac.createOMElement("prestr", omNs);// 设置入参名称
- OMElement name2 = fac.createOMElement("key", omNs);// 设置入参名称
- name.setText("hawei");// 设置入参值
- name2.setText("6181a1fb89564b589283ad578baa7d5e");
- method.addChild(name);
- method.addChild(name2);
- method.build();
- System.out.println("method:" + method.toString());
- OMElement response = sender.sendReceive(method);
- System.out.println("response:" + response);
- OMElement elementReturn = response.getFirstElement();
- System.out.println("cityCode:" + elementReturn.getText());
- } catch (AxisFault e) {
- System.out.println("Error");
- e.printStackTrace();
- }
- }
- }
问题三:org.apache.axis2.AxisFault: 服务器无法读取请求。 ---> XML 文档(1, 291)中有错误。 ---> 字符串“2014-12-09 02:03:00”不是有效的 AllXsd 值。
这个问题主要是日期格式问题,日期格式改成“2014-12-09T02:03:00”
- String timestamp1 =new SimpleDateFormat("yyyy-MM-dd").format(nowDate);
- String timestamp2 =new SimpleDateFormat("hh:mm:ss").format(nowDate);
- String timestampString=timestamp1+" "+timestamp2;
问题四:SOAP头如何加
- public static void addValidation(ServiceClient serviceClient) {
- OMFactory fac = OMAbstractFactory.getOMFactory();
- OMNamespace omNs = fac.createOMNamespace(tns, "");
- OMElement header = fac.createOMElement("CredentialSoapHeader", omNs);
- OMElement appId = fac.createOMElement("AppID", omNs);
- //
- appId.setText("145");
- header.addChild(appId);
- System.out.println("header:" + header.toString());
- serviceClient.addHeader(header);
- }
下面罗列下需要的Axis2的包,包实在太多,不要都打入进来
Axis2 java调用.net webservice接口的问题(郑州就维)的更多相关文章
- java调用CXF WebService接口的两种方式
通过http://localhost:7002/card/services/HelloWorld?wsdl访问到xml如下,说明接口写对了. 2.静态调用 // 创建WebService客户端代理工厂 ...
- java调用 C# webservice接口
java调用webservice接口方式有多种,本人很懒,测试一种满足我的需求,故为试验其他方法,仅供参考 一:工具 MyEclipse,C#编码发布的webservice接口 二:步骤 1.打开my ...
- java获取https网站证书,附带调用https:webservice接口
一.java 获取https网站证书: 1.创建一个java工程,新建InstallCert类,将以下代码复制进去 package com; import java.io.BufferedReader ...
- java调用C# webService发布的接口
java调用C# webService发布的接口 java调用C# webService方式有很多种我这里只介绍一种 首先需要引入axis的jar包 axis的maven坐标如下 <depend ...
- Java调用.Net WebService参数为空解决办法 (远程)调试webservice方法 转
Java调用.Net WebService参数为空解决办法 (远程)调试webservice方法 同事遇到一个很囧的问题,java调,netwebservice的时候,调用无参数方法成功,调用有参 ...
- Java调用第三方http接口的方式
1. 概述 在实际开发过程中,我们经常需要调用对方提供的接口或测试自己写的接口是否合适.很多项目都会封装规定好本身项目的接口规范,所以大多数需要去调用对方提供的接口或第三方接口(短信.天气等). 在J ...
- Java调用Http/Https接口(6)--RestTemplate调用Http/Https接口
RestTemplate是Spring提供的用于访问Http接口的客户端,提供同步的API:在将来的Spring版本中可能会过时,将逐渐被WebClient替代.文中所使用到的软件版本:Java 1. ...
- Java调用Http/Https接口(5)--HttpAsyncClient调用Http/Https接口
HttpAsyncClient是HttpClient的异步版本,提供异步调用的api.文中所使用到的软件版本:Java 1.8.0_191.HttpClient 4.1.4. 1.服务端 参见Java ...
- Java调用Http/Https接口(4)--HttpClient调用Http/Https接口
HttpClient是Apache HttpComponents项目下的一个组件,是Commons-HttpClient的升级版,两者api调用写法也很类似.文中所使用到的软件版本:Java 1.8. ...
随机推荐
- 第一个 MIC shared_memory 程序
设置Intel编译器的运行环境 在terminal中执行编译器的环境脚本 compilervars.sh: source <install-dir>/bin/compilervars.sh ...
- Linux启动提示“unexpected inconsistency;RUN fsck MANUALLY”
问题:在开机启动时,提示“unexpected inconsistency;RUN fsck MANUALLY”进不了系统 解决方法: fsck不仅可以对文件系统进行扫描,还能修正文件系统的一些问题, ...
- ThreadPoolExecutor 线程池的实现
ThreadPoolExecutor继承自 AbstractExecutorService.AbstractExecutorService实现了 ExecutorService 接口. 顾名思义,线程 ...
- CentOS 开启GD库
在php.ini 中没有找到"extension=php_gd2.dll"这行代码,这是因为CentOS一般没有预装GD库. 解决办法: 1.在线安装GD库 yum -y inst ...
- Entity Framework多对多关联映射的实现
Entity Framework是微软官方提供的一个ORM解决方案,它有纯正的血统,比NHibernate更容易使用并且与现有其它官方框架配合更加密切. 时代不断的在发展变化,记得10年前还是ADO( ...
- WPF异步调用WCF服务
wpf调用wcf时,第一次访问总耗时到达几秒,影响界面的用户体验,因此在wpf加载界面和加载数据时采用异步加载,即异步访问wcf服务, 由于是否采用异步加载和服务端无关,仅仅由客户端自己根据需要来选择 ...
- 前端资源多个产品整站一键打包&包版本管理(二)——如何在bower的配置文件加上注释
问题: 当一个工程里面有好几个项目,每个项目引用同一个包,但是不同的名字,例如在bower中 fancybox 跟 jquery.fancybox 是一样的,我们只需要下载其中的一个版本,而打包工作不 ...
- JsTree异步加载数据实现多级菜单
最近在搞一个项目的维护,有一个问题是把原来的树导航变成多级的,原来的那个导航是JsTree的,但我又不熟悉,遂头疼了好久... 终于,他还是出来了,下面就贴上主要代码和思路,因为我在搞这个东西的时候在 ...
- php eval函数用法总结
可以在php.ini禁止此函数,结果失败了 eval定义和用法 eval() 函数把字符串按照 PHP 代码来计算. 该字符串必须是合法的 PHP 代码,且必须以分号结尾. 如果没有在代码字符串 ...
- PHP学习笔记(1) - 开发环境搭建
运行环境:phpstudy 它基本包括运行php应用需要的一切,php. apache.mysql,一键傻瓜安装 装好之后只需要配置虚拟主机和修改host文件就可以支持多站点 下载: http://w ...