package testClick.src.test;import javax.xml.namespace.QName;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

今天一个朋友咨询java调用.net的webservice功能,折腾了2个小时,也都折腾出来了,贴出来,希望用到的朋友少走弯路

1、axis调用.net的webservicepackage test;

import java.net.URL;

import javax.xml.namespace.QName;

import org.apache.axis.client.Call;

import org.apache.axis.client.Service;

import org.apache.axis.encoding.XMLType;

import javax.xml.rpc.ParameterMode;

public class Test {

public static void test() throws Exception{

Service service = new Service();

Call call = null;

try {

call = (Call) service.createCall();

call.setTargetEndpointAddress(new URL("http://www.webxml.com.cn/WebServices/WeatherWebService.asmx"));

call.setOperationName(new QName("http://WebXml.com.cn/","getWeatherbyCityName"));

call.addParameter(new QName("http://WebXml.com.cn/", "theCityName"),XMLType.SOAP_VECTOR,ParameterMode.IN);

call.setReturnType(XMLType.SOAP_VECTOR);

call.setUseSOAPAction(true);

call.setSOAPActionURI("http://WebXml.com.cn/getWeatherbyCityName");

System.out.println(call.invoke(new Object[]{"广州"}));

} catch (Exception e) {

e.printStackTrace();

}

}

/**

* @param args

*/

public static void main(String[] args) throws Exception{

test();

}

}

2、axis2调用.net的webservice

axis2调用不需要写那么多,按照下面的步骤,一步一步来,简单你都想象不到

1、下载axis2(到apache官网下载www.apache.org)

2、我下载的是axis2-1.5-bin.zip,解压到当前文件夹

3、进入bin目录(F:\study\java\service\axis2\axis2-1.5\bin)

4、打开cmd,进入第3步的bin目录,输入wsdl2java.bat -uri http://www.webxml.c

om.cn/WebServices/WeatherWebService.asmx?wsdl,回车

5、之后会在bin目录下生成一个src目录,将src目录下的两个类考到eclipse开发目录下

6、建一个测试类Test,代码如下

import cn.com.webxml.WeatherWebServiceStub;

import cn.com.webxml.WeatherWebServiceStub.ArrayOfString;

import cn.com.webxml.WeatherWebServiceStub.GetWeatherbyCityName;

public class Test {

public static void test1(){

try{

WeatherWebServiceStub stub = new WeatherWebServiceStub();

stub._getServiceClient().getOptions().setProperty(

org.apache.axis2.transport.http.HTTPConstants.CHUNKED,

Boolean.FALSE);

GetWeatherbyCityName city = new GetWeatherbyCityName();

city.setTheCityName("广州");

ArrayOfString array = stub.getWeatherbyCityName(city).getGetWeatherbyCityNameResult();

String[] str = array.getString();

for(String s : str){

System.out.println(s);

}

}catch(Exception e){

e.printStackTrace();

}

}

/**

* @param args

*/

public static void main(String[] args) throws Exception{

test1();

}

}

需要注意的是这个类 GetWeatherbyCityName,这个本来是.net webservice中的一个方法,如下

POST /WebServices/WeatherWebService.asmx HTTP/1.1

Host: www.webxml.com.cn

Content-Type: text/xml; charset=utf-8

Content-Length: length

SOAPAction: "http://WebXml.com.cn/getWeatherbyCityName"

string

用axis2生成java代码后,Instantaneous Transference Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 6367   Accepted: 1439 Description It was long ago when we played the game Red Alert. There is a magic function for the game objects which is called inst会自动生成一个对应的对象,webservice需要传递的参数,可以通过对这个对象赋值操作完成,如上面,我要查广州的天气,就设置为city.setTheCityName("广州");

注意,关键的地方

由于.net webservice中返回的是ArrayOfString,java中没有这个对象,所以axis2会自动生成这个对象,然后转换成对应的数组即可,如String[] str = array.getString();在axis版本中,使用的是返回类型,但是返回类型设置其他的比如String等都会报错,只能设置成VECTOR,即call.setReturnType(XMLType.SOAP_VECTOR),如果只返回一个字符串,可以直接使用STRING;这样才能确保返回正确。

比较两个版本,还是觉得axis2使用方便

axis2 java.net.url_axis,axis2调用.net的webservice相关推荐

  1. java .net webservice_Java客户端调用.NET的WebService实例

    项目需要去调用.NET的WebSrevice,本身是Java,研究了半天,终于有些头绪,记下来. 1,新建.NET WebService.只在原方法上加上一个string类型的参数str [WebMe ...

  2. asmx用java怎么调_java调用asmx的webservice

    eclipse插件(axis2 tool--Code Generator Wizard)实现Java调用 asmx 的Web Service 一个获得天气情况及国家城市的 Web Service ht ...

  3. 关于安卓调用C#的WebService上传图片问题(不使用ksoap2)

    ============问题描述============ 小弟初学安卓开发.最近需要做一个图片上传的功能. 我是用java开发安卓,调用C#的WebService.在网上找到一大堆资料,几乎全部是用k ...

  4. java axis2 教程_webservice的Axis2入门教程java版

    本文转自百度文库 Axis2是一套崭新的WebService引擎,该版本是对Axis1.x重新设计的产物.Axis2不仅支持SOAP1.1和SOAP1.2,还集成了非常流行的REST WebServi ...

  5. 在Eclipse中通过axis2调用网络免费webService服务

    上上一篇blog讲到了如何用axis2建立webService(sayHello),然后调用的方法. http://www.cnblogs.com/Jason_Chan/archive/2013/04 ...

  6. axis2 axiom_深入了解Axis2:AXIOM

    还有另一种文档模型? Apache Axis2 1.1已发布,它为长期运行的Apache系列Web服务框架的爱好者提供了激动人心的新功能. 我们将在以后的文章中介绍Axis2本身,但是本文将深入探讨A ...

  7. org.apache.axis2.AxisFault: org.apache.axis2.databinding.ADBException: Unexpected subelement profile

    原创:转载请注明出处 1.异常情况 org.apache.axis2.AxisFault: org.apache.axis2.databinding.ADBException: Unexpected ...

  8. WebService之Axis2系列教程(一)Axis2的下载、安装和使用

    Axis2是目前比较流行的WebService引擎.WebService被应用在很多不同的场景.例如,可以使用WebService来发布服务端 Java类的方法,以便使用不同的客户端进行调用.这样可以 ...

  9. WebService大讲堂之Axis2(9):编写Axis2模块(Module)

    Axis2可以通过模块(Module)进行扩展.Axis2模块至少需要有两个类,这两个类分别实现了Module和Handler接口.开发和使用一个Axis2模块的步骤如下: 1. 编写实现Module ...

最新文章

  1. 大数据:Hive和Hbase的区别于优势
  2. WCF 调用webservice
  3. python编写篮球_Python编程2——Python实现计算篮球比赛是否领先安全的程序
  4. 1947-2021 NBA总冠军次数排行榜
  5. What Every Computer Programmer Should Know About Windows API, CRT, and the Standard C++ Library
  6. spring boot 教程(三)配置详解
  7. 类/对象/构造函数/析构函数
  8. 【eoeAndroid社区索引】android数据存储之SQLite教程实例汇总
  9. orbSLAM2 之 追踪参考关键帧
  10. UR3机器人运动学分析之正运动学分析
  11. 2020神舟几号发射_今年将发射神舟十一号载人飞船 2020年将建成载人空间站
  12. 最大子矩阵问题----悬线法
  13. 华为WATCH D血压管理计划怎么用
  14. Windows易升升级指南(解决大版本间更新95%的问题)
  15. wakeup_in休眠唤醒
  16. 分享三种在Excel表格中自动求和的方法
  17. phyton题库+解析
  18. Robotic KDL library
  19. 灵媒阅读开始自学通灵
  20. 北京工作居住证办理流程

热门文章

  1. 通配符 不是jpg 结尾文件_Struts(十九)- 使用使用通配符匹配
  2. 微型计算机,单片机和单板机是,9、微型计算机、单片机和单板机是()
  3. python数学函数_「分享」关于Python整理的常用数学函数整理
  4. 厉害了,在Pandas中用SQL来查询数据,效率超高
  5. 牛逼!Python函数和文件操作(长文系列第3篇)
  6. Python可变数据类型高效编程
  7. 作为程序员,你吃过哪些数学的亏?
  8. php 链接excel表格数据,php 怎么把数据导出到excel表格?php 连接 excel表格数据库数据...
  9. 画图软件怎么做性能测试,软件性能测试能力提升解决方案.pdf
  10. 从零开始数据科学与机器学习算法-数据预处理与基准模型-01