Axis2 java调用.net webservice接口的问题(郑州就维)

[html] view plaincopy

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

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

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

[html] view plaincopy

  1. http://tempuri.org/GetSign

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

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

[html] view plaincopy

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

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

[java] view plaincopy

  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

[html] view plaincopy

  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头如何加

[html] view plaincopy

  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的包,包实在太多,不要都打入进来

时间: 2024-10-25 05:05:37

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

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

通过http://localhost:7002/card/services/HelloWorld?wsdl访问到xml如下,说明接口写对了. 2.静态调用 // 创建WebService客户端代理工厂        JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();        // 判断是否抛出异常        factory.getOutInterceptors().add(new LoggingInIntercept

Java调用doNet webService方法

doNet的webService 浏览器访问测试地址:http://192.168.4.17/JLWWS/sendCommand.asmx,出现 点击getDeviceValue方法,出现 上图的xml代码再贴一遍: POST /JLWWS/sendCommand.asmx HTTP/1.1 Host: 192.168.4.17 Content-Type: text/xml; charset=utf-8 Content-Length: length SOAPAction: "http://tem

java调用matlab函数接口的两种方案

Java 调用matlab 函数接口 Java调用matlab函数接口有两种方式: l 一种是通过matlab把函数打成jar包: l 一种是把matlab编译成dll后,用C++再封装成java能支持的数据类型的dll. 注意:不论用这两种方式中的哪一种,最终部署时都需要matlab环境(MCR,在matlab安装路径下有). 1. 方式一:matlab直接打jar包 1.1. 利用matlab自带工具打jar包 1.1.1. 建立jar包 在matlab的Commond Window中输入d

JAVA调用.NET WebService终极方案(包含对SoapHeader的处理)

一.前言: 今日部门的产品需要用到短信功能,需要走公司统一的接口,而该短信接口是由.net开发的,利用两天时间彻底搞定了用java来调用.net 的web service,包括对soap header的处理. 二.解决方案 查询了下java中对soap的支持,有几种方案,有axis和xfire等,我这里先选择的是axis的1.4版本,随即开始开发,这里面有个大坑啊.就是java对类的属性中的getXXXX方法解析后生成的xml文件的属性首字母是小写的,与.NET的生成的xml对不上,光这个问题耗

Java调用 新浪微博API 接口发微博,逐条讲解,绝对清晰

最近要做个课程设计,使用微博控制树莓派,树莓派再控制发光二极管的亮和灭,主要设计分两层,上层是用Java调用新浪微博API来实现对微博旳监听,当我的微博被回复时能够自动读取评论内容,并根据评论的指令内容来决定树莓派的控制动作.下层是用C语言调用操作系统底层接口来实现用树莓派GPIO接口控制发光二极管的闪烁.亮灭. 由于网上教程都很老了,最近微博接口发生了很多变化,所以我决定全新写一篇详细的博文,如若能对您起到帮助作用,那将是我莫大的荣幸.同时我非常希望能与您交流,有问题请在评论里回复我. 本文将

Java调用阿里大于接口发送手机验证码

前五步可参考阿里云服务文档:https://help.aliyun.com/document_detail/59210.html?spm=a2c4g.11174283.4.1.2b152c42DoJ7Mt 一.入驻阿里云 1.阿里云注册入口:点击注册页面 2.实名认证:点击进行实名认证 二.开通短信服务 1.开通短信服务:点击开通短信服务 2.进入控制台:点击查看控制台页面 三.获取AccessKey(记得保存!) 1创建AccessKey:点击创建AccessKey 2.获取AccessKey

JAVA调用基站云接口调用实例

/** * @(#)jizhanyun.com for java * * 基站云平台接口演示FOR JAVA * * @基站云 * @version 1.00 */ import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import java.net.*; import java.io.IOException; public class API { public s

.net Core 调用微信Jsapi接口,H5解析二维码

项目里需要用到扫描二维码,自己实现,不会. 找到了两种解决方案: 通过reqrcode.js,这是一个前端解析二维码内容的js库.如果二维码比较清晰,用这种效果也不错 调用微信扫一扫功能,这种效果很好.但是调试接口超级麻烦. 具体实现:前端代码(vue)(前端用到 vux) <template> <div class="main"> <group title="打印机参数" label-width="5.5em"&g

java webservices 以Axis1.4方式 调用sap webservice接口.

1. 首先需要下载Axis1.4 jar包,这个必应搜索大把,下载下来后把jar包加入eclipse工程项目路径中即可. 2. 下载mail.jar和activation.jar 俩个包.下载地址:https://www.eclipse.org/webtools/wst/components/ws/download_instructions_for_jars.html 该网址中含有所有 java webServices 所需要的jar包.如果确实这俩个包,运行时会有:Unable to find