1. 这是一个古老的问题,古老到从我若干年前遇到这样的问题就是一个解决之道:反复尝试。其实标准是什么,标准就是一个束缚,一种按既定规则的束缚,错点点,你的调用就可能不成功,不成功后你要花费大量的力气查找原因和错误,差异很多帖子,查找相似的地方,Webservice的实现不同,Soap,CXF,Axis等,每种工具都有指定的方式,刚开始尝试Soap发现这个根本没合适的包进行调用,也是IBM比较老的jar,2001年写的比较复杂,我对比较复杂的东西向来不感兴趣,因为太复杂我也搞不懂。索性用Axis2,在调用之前你要知道soap的两个协议版本1.1,1.2是不太一样的。

问题一:org.apache.axis2.AxisFault: 服务器未能识别 HTTP 头 SOAPAction 的值

这个错误错误查了好久,最后发现对方给的资料里面忘记给命名空间地址了,我去真是头疼,注意的是需要加方法名称

  1. http://tempuri.org/GetSign

问题二:org.apache.axis2.AxisFault: 服务器无法处理请求。 ---> 未将对象引用设置到对象的实例。

这个错误,也是满天飞的帖子其实是一个很小的问题,反斜杠

  1. OMNamespace omNs = fac.createOMNamespace("http://tempuri.org/", "");

标准吧,只要错那么点点,你就别想调通了,我把整个代码示例贴到下面:

  1. import org.apache.axiom.om.OMAbstractFactory;
  2. import org.apache.axiom.om.OMElement;
  3. import org.apache.axiom.om.OMFactory;
  4. import org.apache.axiom.om.OMNamespace;
  5. import org.apache.axis2.AxisFault;
  6. import org.apache.axis2.addressing.EndpointReference;
  7. import org.apache.axis2.client.Options;
  8. import org.apache.axis2.client.ServiceClient;
  9. import org.apache.axis2.transport.http.HTTPConstants;
  10. public class SoapAxis {
  11. private static EndpointReference targetEPR = new EndpointReference("http://192.168.0.185/OnlinePaywebservice/platformws.asmx");
  12. public static void main(String[] args) {
  13. Options options = new Options();
  14. options.setAction("http://tempuri.org/GetSign");// 调用接口方法
  15. options.setTo(targetEPR);
  16. options.setProperty(HTTPConstants.CHUNKED, "false");//设置不受限制.
  17. ServiceClient sender = null;
  18. try {
  19. sender = new ServiceClient();
  20. sender.setOptions(options);
  21. OMFactory fac = OMAbstractFactory.getOMFactory();
  22. OMNamespace omNs = fac.createOMNamespace("http://tempuri.org/", "");
  23. OMElement method = fac.createOMElement("GetSign", omNs);
  24. OMElement name = fac.createOMElement("prestr", omNs);// 设置入参名称
  25. OMElement name2 = fac.createOMElement("key", omNs);// 设置入参名称
  26. name.setText("hawei");// 设置入参值
  27. name2.setText("6181a1fb89564b589283ad578baa7d5e");
  28. method.addChild(name);
  29. method.addChild(name2);
  30. method.build();
  31. System.out.println("method:" + method.toString());
  32. OMElement response = sender.sendReceive(method);
  33. System.out.println("response:" + response);
  34. OMElement elementReturn = response.getFirstElement();
  35. System.out.println("cityCode:" + elementReturn.getText());
  36. } catch (AxisFault e) {
  37. System.out.println("Error");
  38. e.printStackTrace();
  39. }
  40. }
  41. }

问题三:org.apache.axis2.AxisFault: 服务器无法读取请求。 ---> XML 文档(1, 291)中有错误。 ---> 字符串“2014-12-09 02:03:00”不是有效的 AllXsd 值。

这个问题主要是日期格式问题,日期格式改成“2014-12-09T02:03:00

  1. String timestamp1 =new SimpleDateFormat("yyyy-MM-dd").format(nowDate);
  2. String timestamp2 =new SimpleDateFormat("hh:mm:ss").format(nowDate);
  3. String timestampString=timestamp1+" "+timestamp2;

问题四:SOAP头如何加

  1. public static void addValidation(ServiceClient serviceClient) {
  2. OMFactory fac = OMAbstractFactory.getOMFactory();
  3. OMNamespace omNs = fac.createOMNamespace(tns, "");
  4. OMElement header = fac.createOMElement("CredentialSoapHeader", omNs);
  5. OMElement appId = fac.createOMElement("AppID", omNs);
  6. //
  7. appId.setText("145");
  8. header.addChild(appId);
  9. System.out.println("header:" + header.toString());
  10. serviceClient.addHeader(header);
  11. }

 

下面罗列下需要的Axis2的包,包实在太多,不要都打入进来

Axis2 java调用.net webservice接口的问题(郑州就维)的更多相关文章

  1. java调用CXF WebService接口的两种方式

    通过http://localhost:7002/card/services/HelloWorld?wsdl访问到xml如下,说明接口写对了. 2.静态调用 // 创建WebService客户端代理工厂 ...

  2. java调用 C# webservice接口

    java调用webservice接口方式有多种,本人很懒,测试一种满足我的需求,故为试验其他方法,仅供参考 一:工具 MyEclipse,C#编码发布的webservice接口 二:步骤 1.打开my ...

  3. java获取https网站证书,附带调用https:webservice接口

    一.java 获取https网站证书: 1.创建一个java工程,新建InstallCert类,将以下代码复制进去 package com; import java.io.BufferedReader ...

  4. java调用C# webService发布的接口

    java调用C# webService发布的接口 java调用C# webService方式有很多种我这里只介绍一种 首先需要引入axis的jar包 axis的maven坐标如下 <depend ...

  5. Java调用.Net WebService参数为空解决办法 (远程)调试webservice方法 转

    Java调用.Net WebService参数为空解决办法 (远程)调试webservice方法   同事遇到一个很囧的问题,java调,netwebservice的时候,调用无参数方法成功,调用有参 ...

  6. Java调用第三方http接口的方式

    1. 概述 在实际开发过程中,我们经常需要调用对方提供的接口或测试自己写的接口是否合适.很多项目都会封装规定好本身项目的接口规范,所以大多数需要去调用对方提供的接口或第三方接口(短信.天气等). 在J ...

  7. Java调用Http/Https接口(6)--RestTemplate调用Http/Https接口

    RestTemplate是Spring提供的用于访问Http接口的客户端,提供同步的API:在将来的Spring版本中可能会过时,将逐渐被WebClient替代.文中所使用到的软件版本:Java 1. ...

  8. Java调用Http/Https接口(5)--HttpAsyncClient调用Http/Https接口

    HttpAsyncClient是HttpClient的异步版本,提供异步调用的api.文中所使用到的软件版本:Java 1.8.0_191.HttpClient 4.1.4. 1.服务端 参见Java ...

  9. Java调用Http/Https接口(4)--HttpClient调用Http/Https接口

    HttpClient是Apache HttpComponents项目下的一个组件,是Commons-HttpClient的升级版,两者api调用写法也很类似.文中所使用到的软件版本:Java 1.8. ...

随机推荐

  1. syntax error near unexpected token `then'

    #!/bin/bashclearfunction test{   if[$1 -eq "root"]&&[$2 -eq "123456"]    ...

  2. sql 自定义排序

    方法一: 比如需要对SQL表中的字段NAME进行如下的排序: 张三(Z) 李四(L) 王五(W) 赵六(Z) 按照sql中的默认排序规则,根据字母顺序(a~z)排,结果为:李四  王五 赵六 张三   ...

  3. 如何使用 require.js ,实现js文件的异步加载,避免网页失去响应,管理模块之间的依赖性,便于代码的编写和维护。

    一.为什么要用require.js? 最早的时候,所有Javascript代码都写在一个文件里面,只要加载这一个文件就够了.后来,代码越来越多,一个文件不够了,必须分成多个文件,依次加载.下面的网页代 ...

  4. html5 css3 如何绘制扇形任意角度

    扇形制作原理,底部一个纯色原形,里面2个相同颜色的半圆,可以是白色,内部半圆按一定角度变化,就可以产生出扇形效果 <html> <head> <meta charset= ...

  5. 如何编写规范,灵活,稳定,高质量的HTML和css代码

    黄金定律 永远遵循同一套编码规范,不管有多少人共同参与同一项目,一定要确保每一行代码都像是同一个人编写的. 语法: 1.用两个空格来代替制表符(tab);2.嵌套元素应当缩进一次(两个空格); 3.对 ...

  6. OpenDialog获取文件名

    //OpenDialog获取文件 procedure TForm2.Button1Click(Sender: TObject); begin File_Path:=''; if OpenDialog1 ...

  7. 6.MVC框架开发(文件上传)

    1.需要设置表单的enctype="multipart/form-data"属性 2.在控制器中获取表单文件中数据 [HttpPost] public ActionResult A ...

  8. JAVA程序性能分析及调优浅析

    1.性能分析本质 寻找系统的性能瓶颈(木桶理论/短板效应),并处理系统的性能瓶颈 2.性能分析主要指标负载.响应和服务器CPU\MEM等的使用率 3.性能分析主要工具 LoadRunner Visua ...

  9. android报表图形引擎(AChartEngine)demo解析与源码

    AchartEngine支持多种图表样式,本文介绍两种:线状表和柱状表. AchartEngine有两种启动的方式:一种是通过ChartFactory.get***View()方式来直接获取到view ...

  10. OpenGL ES 3.0 基础知识

    首先要了解OpenGL的图形管线有哪些内容,再分别去了解其中的相关的关系: 管线分别包括了顶点缓冲区/数组对象,定点着色器,纹理,片段着色器,变换反馈,图元装配,光栅化,逐片段操作,帧缓冲区.其中顶点 ...