今天一个朋友咨询java调用.net的webservice功能,折腾了2个小时,也都折腾出来了,贴出来,希望用到的朋友少走弯路
1、axis调用.net的webservice
package 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"
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<getWeatherbyCityName xmlns="http://WebXml.com.cn/">
<theCityName>string</theCityName>
</getWeatherbyCityName>
</soap:Body>
</soap:Envelope>
用axis2生成java代码后,会自动生成一个对应的对象,webservice需要传递的参数,可以通过对这个对象赋值操作完成,如上面,我要查广州的天气,就设置为city.setTheCityName("广州");
注意,关键的地方
由于.net webservice中返回的是ArrayOfString,java中没有这个对象,所以axis2会自动生成这个对象,然后转换成对应的数组即可,如String[] str = array.getString();在axis版本中,使用的是返回类型,但是返回类型设置其他的比如String等都会报错,只能设置成VECTOR,即call.setReturnType(XMLType.SOAP_VECTOR),如果只返回一个字符串,可以直接使用STRING;这样才能确保返回正确。
比较两个版本,还是觉得axis2使用方便
分享到:
相关推荐
Java Axis调用.NET WebService实现短信收发是一个跨平台、跨语言的通信技术应用实例。在本文中,我们将深入探讨这个主题,了解如何利用Java的Axis框架与.NET环境中的WebService进行交互,特别是在短信发送和接收方面...
java采用axis调用.net写的WebService,WebService的参数有传人和传出,传出的参数为ref,java端ParameterMode.OUT,传人的为ParameterMode.IN,WebService返回值为String,java利用Map取传出参数,对Map进行遍历取得...
这个过程可以通过Apache CXF、 Axis2等开源工具完成,或者手动构造SOAP请求。以下是使用Apache CXF生成代理类的步骤: 1. 添加CXF依赖:在Java项目的pom.xml文件中引入Apache CXF的依赖,确保能使用CXF的工具生成...
以前看别人写的,似乎都比较复杂,而且没有提供一个webservice供初学者测试,我找了一个http://www.webservicex.net/globalweather.asmx,根据这个写了一个例子,让新学的少走一些弯路吧
1. **创建WebService**:在Axis2中,可以通过编写一个简单的Java类并暴露其方法作为Web服务接口。这个类通常会遵循SOAP协议,定义服务操作。例如,你可以创建一个名为`HelloWorldService`的类,包含一个`sayHello`...
Java调用.NET的WebService接口实例,jar包删减到三个,干净清爽,里面包含注多注释和图解,搞了半天的家伙拿出来与大家分享,无任何BUG,修改里面的参数即可直接运行,对于这种好东西,花了半天时间10分不算高,重在...
在Java中调用.NET Web服务时,Axis2提供了一套工具和库,使得开发者能够轻松地生成客户端代码来访问Web服务。 4. **wsimport工具**: wsimport是JDK自带的一个命令行工具,用于从WSDL(Web Service Description ...
在本实例中,Java通过Apache Axis库调用.NET WebService,主要涉及以下步骤和知识点: 1. **Apache Axis库**:Apache Axis是Apache软件基金会开发的一个开源项目,它提供了Java到SOAP的绑定框架,允许Java开发者...
Java程序调用.NET/C#的Web服务是一种跨平台的交互方式,主要依赖于SOAP(Simple Object Access Protocol)协议,使得不同编程语言开发的应用程序能够相互通信。在本场景中,用户已经提供了一个.NET的Web服务,而我们...
用AXIS2作为客户端调用webService的demo:本人亲测可用,eclipse工程java项目包含完整代码和完整jar包, 只要用eclipse导入项目即可,运行控制台显示success或者false字符串,说明OK。
AXIS2远程调用WebService是Java开发者在进行分布式服务交互时常用的一种技术。本文将详细介绍如何使用Eclipse集成开发环境和AXIS2框架创建并调用WebService。首先,我们需要准备以下基础工具: 1. Eclipse IDE:这...
在Java中,我们通常使用Apache Axis2、JAX-WS(Java API for XML Web Services)或者CXF等库来调用WebService。这些库提供了工具和API,使得开发者可以方便地生成客户端代理类,这些类可以直接调用Web服务的方法。 ...
本教程将详细讲解如何使用Apache Axis2库来调用.Net平台上的Web服务接口,以天气预报的`getSupportCity`接口为例。Apache Axis2是Java世界中一个强大的Web服务框架,它支持SOAP、RESTful等多种通信协议,能够方便地...
Java和Axis2是开发Web服务客户端的重要工具,用于调用基于SOAP协议的Web服务。本文将深入探讨如何利用Java和Axis2库来实现这一功能,同时结合提供的代码示例进行详细解析。 首先,Web服务是一种通过网络进行通信的...
(1):http://www.webservicex.com/stockquote.asmx<br>(2):http://test.payment.net.tw/MPWebService/Main.asmx<br>分别对应我例子里的2个包。 运行test/WsTest.java 类就可以看到结果了。 <br> ...
axis2例子 webservice axis2 示例axis2例子 webservice axis2 示例axis2例子 webservice axis2 示例axis2例子 webservice axis2 示例axis2例子 webservice axis2 示例
本文将深入探讨如何使用Axis2客户端调用WebService接口,并且会特别关注如何精简所需的jar包。 首先,了解Axis2客户端的基本概念是至关重要的。Axis2客户端是用于与远程Web服务交互的工具,它允许开发者通过SOAP...
在Java中,Axis使得调用.NET的Web服务变得简单。 2. **安装与配置**: 首先,你需要下载并安装Axis的二进制包,将其解压到本地文件系统。接着,将相关的JAR文件(如axis.jar, axis-ant.jar等)添加到Java项目的类...
axis2客户端调用axis1服务接口 调用方式 使用RPC方式调用WebService,为了防止冲突可以增加 // 与weblogic的lib冲突配置 System.setProperty("javax.xml.stream.XMLInputFactory", ...