`
cqyqing
  • 浏览: 56907 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

axis,axis2调用.net的webservice

阅读更多
今天一个朋友咨询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使用方便

分享到:
评论
1 楼 qtdszws1 2014-11-13  
方法试过,很管用,谢谢

相关推荐

    java axis 调用 .net webservice 短信收发

    Java Axis调用.NET WebService实现短信收发是一个跨平台、跨语言的通信技术应用实例。在本文中,我们将深入探讨这个主题,了解如何利用Java的Axis框架与.NET环境中的WebService进行交互,特别是在短信发送和接收方面...

    java采用axis调用.net写的WebService

    java采用axis调用.net写的WebService,WebService的参数有传人和传出,传出的参数为ref,java端ParameterMode.OUT,传人的为ParameterMode.IN,WebService返回值为String,java利用Map取传出参数,对Map进行遍历取得...

    java调用.net发布的webservice(asmx)

    这个过程可以通过Apache CXF、 Axis2等开源工具完成,或者手动构造SOAP请求。以下是使用Apache CXF生成代理类的步骤: 1. 添加CXF依赖:在Java项目的pom.xml文件中引入Apache CXF的依赖,确保能使用CXF的工具生成...

    使用axis1.2调用.net webservice

    以前看别人写的,似乎都比较复杂,而且没有提供一个webservice供初学者测试,我找了一个http://www.webservicex.net/globalweather.asmx,根据这个写了一个例子,让新学的少走一些弯路吧

    axis2发布webservice和调用axis2服务接口

    1. **创建WebService**:在Axis2中,可以通过编写一个简单的Java类并暴露其方法作为Web服务接口。这个类通常会遵循SOAP协议,定义服务操作。例如,你可以创建一个名为`HelloWorldService`的类,包含一个`sayHello`...

    Java调用ASP.NET的WebService接口实例

    Java调用.NET的WebService接口实例,jar包删减到三个,干净清爽,里面包含注多注释和图解,搞了半天的家伙拿出来与大家分享,无任何BUG,修改里面的参数即可直接运行,对于这种好东西,花了半天时间10分不算高,重在...

    java调用.net webservice时所需的jar包

    在Java中调用.NET Web服务时,Axis2提供了一套工具和库,使得开发者能够轻松地生成客户端代码来访问Web服务。 4. **wsimport工具**: wsimport是JDK自带的一个命令行工具,用于从WSDL(Web Service Description ...

    java调用.net webservice实例

    在本实例中,Java通过Apache Axis库调用.NET WebService,主要涉及以下步骤和知识点: 1. **Apache Axis库**:Apache Axis是Apache软件基金会开发的一个开源项目,它提供了Java到SOAP的绑定框架,允许Java开发者...

    java程序调用.net/c#的webservice

    Java程序调用.NET/C#的Web服务是一种跨平台的交互方式,主要依赖于SOAP(Simple Object Access Protocol)协议,使得不同编程语言开发的应用程序能够相互通信。在本场景中,用户已经提供了一个.NET的Web服务,而我们...

    AXIS2作为客户端调用webService的demo

    用AXIS2作为客户端调用webService的demo:本人亲测可用,eclipse工程java项目包含完整代码和完整jar包, 只要用eclipse导入项目即可,运行控制台显示success或者false字符串,说明OK。

    AXIS2远程调用WebService示例(Eclipse+AXIS2)工具和所用包.rar

    AXIS2远程调用WebService是Java开发者在进行分布式服务交互时常用的一种技术。本文将详细介绍如何使用Eclipse集成开发环境和AXIS2框架创建并调用WebService。首先,我们需要准备以下基础工具: 1. Eclipse IDE:这...

    java调用.NET的webservice源码

    在Java中,我们通常使用Apache Axis2、JAX-WS(Java API for XML Web Services)或者CXF等库来调用WebService。这些库提供了工具和API,使得开发者可以方便地生成客户端代理类,这些类可以直接调用Web服务的方法。 ...

    axis2请求.Net webservice接口Demo

    本教程将详细讲解如何使用Apache Axis2库来调用.Net平台上的Web服务接口,以天气预报的`getSupportCity`接口为例。Apache Axis2是Java世界中一个强大的Web服务框架,它支持SOAP、RESTful等多种通信协议,能够方便地...

    Java+Axis2调用Web Services 网络接口

    Java和Axis2是开发Web服务客户端的重要工具,用于调用基于SOAP协议的Web服务。本文将深入探讨如何利用Java和Axis2库来实现这一功能,同时结合提供的代码示例进行详细解析。 首先,Web服务是一种通过网络进行通信的...

    java 调用.net webservice

    (1):http://www.webservicex.com/stockquote.asmx&lt;br&gt;(2):http://test.payment.net.tw/MPWebService/Main.asmx&lt;br&gt;分别对应我例子里的2个包。 运行test/WsTest.java 类就可以看到结果了。 &lt;br&gt; ...

    axis2例子 webservice axis2 示例

    axis2例子 webservice axis2 示例axis2例子 webservice axis2 示例axis2例子 webservice axis2 示例axis2例子 webservice axis2 示例axis2例子 webservice axis2 示例

    axis2客户端调用webService接口,精简jar包

    本文将深入探讨如何使用Axis2客户端调用WebService接口,并且会特别关注如何精简所需的jar包。 首先,了解Axis2客户端的基本概念是至关重要的。Axis2客户端是用于与远程Web服务交互的工具,它允许开发者通过SOAP...

    java调用.net的webservice传字符串参数

    在Java中,Axis使得调用.NET的Web服务变得简单。 2. **安装与配置**: 首先,你需要下载并安装Axis的二进制包,将其解压到本地文件系统。接着,将相关的JAR文件(如axis.jar, axis-ant.jar等)添加到Java项目的类...

    axis2客户端调用axis1服务接口

    axis2客户端调用axis1服务接口 调用方式 使用RPC方式调用WebService,为了防止冲突可以增加 // 与weblogic的lib冲突配置 System.setProperty("javax.xml.stream.XMLInputFactory", ...

Global site tag (gtag.js) - Google Analytics