`
aosifer
  • 浏览: 1904 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

Axis1.4和Axis2.1.5实现调用.net编写的WebService方法

阅读更多

       公司要将开发一个移动端web项目,本人只会Java,因此就有了和.net编写的WebService产生交互的需求,这几天查找了很多资料,经过同学推荐,使用了axis2来调用.net编写的WebService,具体走过的弯路且听我慢慢讲起:

       才开始接触接口这个东西,领导说是我负责表现层的内容,数据交互交给一个编写.net的同事,让他给我提供接口,实现数据安全。那我就只有遵命咯,开始查阅资料看看怎么调用,刚开始不了解axis和axis2的具体用法,以为和别的jar包一样,直接引入,然后开始编程,陷入了这样一个误区之后,发现怎么查资料都是在越走越远。

       知道后来看到了这个博客http://cqyqing.iteye.com/blog/1668227,说实话,我看过了很多次,都没有仔细看看,知道我自己下载到了axis1.4,然后测试了一下博客里面的方法,才认识到,原来我理解错了方法。

       下面贴一下我自己的axis1.4和axis2.1.5实现的调用WebService的实现

1.axis1.4

       因为不知道具体包结构,就全部引入了lib下的jar包       

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;

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://webservice.webxml.com.cn/WebServices/WeatherWS.asmx"));
			call.setOperationName(new QName("http://WebXml.com.cn/", 
					"getRegionCountry"));                // 两个属性,第一个是命名空间,第二个是调用的方法名
			call.setReturnType(XMLType.SOAP_VECTOR);     // 设置返回的类型
														 // ,如果返回值是xml类型,别使用XMLType.SOAP_STRING类型,会报错
			call.setUseSOAPAction(true);

			call.setSOAPActionURI("http://WebXml.com.cn/getRegionCountry");
			System.out.println(call.invoke(new Object[] {}));
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
        public static void main(String[] args) throws Exception {
		test();
	}
}

     http://webservice.webxml.com.cn/WebServices/WeatherWS.asmx是个公共的webservice接口,getRegionCountry是方法名。

    上面的代码成功调用了getRegionCountry方法,并且获取到结果,在call.setReturnType(XMLType.SOAP_VECTOR)中,曾经掉入一个大坑无法自拔,把其中的返回类型写成了XMLType.SOAP_STRING,结果报反序列化失败的问题,查找了半天,还是因为返回类型设置错了,设置成XMLType.SOAP_VECTOR就可以正常使用了。

2.axis2.1.5(如果没有java调用webservice的基础,请跟我来)

    官网下载axis2-1.5.6-bin.zip

    解压到自己的硬盘目录下

    打开cmd,切换到刚才解压的axis2中的bin目录,然后运行命令 wsdl2java.bat -uri http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?wsdl ,然后回车(这个命令的意思是将上面的公共webservice生成本地类),axis2就会在bin目录下面,生成src目录,进去看,就会发现将webservice生成了本地类, 将产生的本地类引入自己的工程,然后就可以像是调用本地类一样来调用webservice的接口,具体根据自己的项目来实现

public class ClientYRTWebService {
          public static void test1() {

		try {
			Service1Stub stub = new Service1Stub();                                                          //这个类是由axis2的wsdl2java.bat自动生成的类,将其引入到工程中
			stub._getServiceClient()
					.getOptions()
					.setProperty(
							org.apache.axis2.transport.http.HTTPConstants.CHUNKED,           //暂时不了解什么意思,等我有空看看axis2的api
							Boolean.FALSE);
			StaffLogin staffLogin = new StaffLogin();                                                        //这个是staffLogin方法,axis2将方法直接生成一个类,实例化后来使用                   			staffLogin.setUserName("**");
			staffLogin.setPassword("admin");                                                                 //设置输入的参数,我这里有两个参数,用户名和密码
			try {
				String str = stub.staffLogin(staffLogin).getStaffLoginResult();                          //这里获取到webservice的返回结果,我的项目为xml格式的返回,因此,要对返回的结
                                System.out.println(str);                                                                 // 果进行解析,但是这里就暂时不贴了
                        } catch (RemoteException e) {
				e.printStackTrace();
			}
		} catch (AxisFault e) {
			e.printStackTrace();
		}
	}

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

}

     运行后返回的结果,就是我想得到的xml格式的结果。

结论:

1.axis1可能更容易理解常规的Java开发的步骤,但是axis2将webservice生成本地的类后,调用起来更容易,比axis1简单太多

2.axis2生成本地类的时候可能会有些麻烦,但是,一旦生成,那开发的速度将是杠杠的

3.多看文档吧,学习英文吧骚年!

 

 

 

写于2015-3-5   合肥

分享到:
评论

相关推荐

    java客户端调用webservice所调用的axis1.4包和方法调用

    本方法是用axis1.4技术,实现java客户端调用webservice。已经可实现过可行的,如果不行可加我QQ号302633进行详细解析。

    springboot+axis1.4

    3. **创建WebService**:在Spring Boot应用中,你可以通过Axis1.4创建一个WebService。首先,定义一个Java类,包含你想要公开的方法。然后,使用Axis的工具生成服务端点接口和服务类。 4. **配置Spring Boot**:...

    AXIS1.4webservice服务端和客户端例子

    在这个"AXIS1.4 WebService服务端和客户端例子"中,我们将深入探讨如何使用AXIS1.4搭建服务端和客户端,以及如何进行远程调用。 首先,让我们从服务端开始。服务端是提供Web服务的系统,它可以接收客户端的请求并...

    axis1.4完整包下载

    - **创建Web服务**:通过编写Java类并使用特定的注解,Axis1.4可以自动将其暴露为SOAP服务。 - **消费Web服务**:使用Axis1.4提供的客户端工具,可以自动生成Java客户端代理类,方便调用远程SOAP服务。 - **处理WSDL...

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

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

    axis1.4生成客户端

    Axis1.4是Axis的一个版本,它是一个Java实现的Web服务框架,支持SOAP、WSDL和WS-I基本配置。它的主要功能包括发布Web服务、创建Web服务客户端以及处理Web服务的调用。 3. **使用Axis1.4生成客户端**: - **步骤1...

    axis1.4及webService开发教程

    2. **创建Web服务**:编写Java类,定义服务接口和实现。 Axis1.4会根据这些类自动生成Web服务所需的部署描述文件(wsdd)和JavaServer Pages(JSP)。 3. **生成服务端**:使用`wsdl2java`命令,将Java类转换为WSDL...

    手写Axis1.4发布WebService以及客户端调用

    标题中的“手写Axis1.4发布WebService以及客户端调用”指的是使用Apache Axis1.4框架来创建和消费Web服务的过程。Apache Axis是用于构建Web服务的一个开源工具,它允许开发者将Java类转换为Web服务,并且提供客户端...

    axis1.4jar包以及WSDL和服务端代码互转方法

    Axis1.4是Apache组织提供的一款基于Java的Web服务框架,它允许开发者轻松地创建、发布和调用Web服务。本文将深入探讨如何使用Axis1.4.jar包以及Eclipse IDE来实现WSDL(Web Service Description Language)和服务端...

    springboot使用axis1.4的demo

    Spring Boot以其简化配置和快速开发能力而受到广泛欢迎,而Axis1.4是Apache软件基金会的一个开源项目,主要用于生成和消费SOAP Web服务。当我们需要在Spring Boot应用程序中集成Web服务时,Axis1.4提供了一个强大的...

    webservice :spring 3+cxf3.4服务方,AXIS1.4请示方调用

    为了能够通过Axis 1.4客户端调用上面部署的WebService,需要对生成的WSDL文件进行一定的修改,使其符合Axis 1.4的要求。 **步骤四:修改WSDL文件** 1. **下载WSDL文件**:通过访问服务的WSDL URL将其保存为`...

    axis1.4+mybatis3+spring实现webservice

    在本项目中,Axis1.4 被用于实现 Web 服务的发布和调用,使得其他应用程序可以通过网络接口与我们的服务进行通信。 接下来,MyBatis3 是一个优秀的持久层框架,它简化了数据库操作。MyBatis3 提供了灵活的 SQL 编写...

    webservice axis1.4服务实例

    - **WSDL生成器**:可以从Java类自动生成WSDL文档,反之亦然,这使得服务的定义和实现更加紧密相连。 - **扩展性**:Axis1.4允许用户通过编写处理链和消息处理器来扩展其功能,以满足特定需求。 **3. 搭建Axis1.4...

    WebService axis1.4接口服务序列/反序列复杂项目实例

    在这个"WebService Axis1.4接口服务序列/反序列复杂项目实例"中,我们将深入探讨如何在 Axis1.4 中处理复杂的参数、自定义实体对象的序列化与反序列化,以及客户端的复杂调用。 首先,让我们理解序列化和反序列化的...

    axis1.4帮助文档

    Axis1.4是Apache软件基金会开发的一个开源SOAP(简单对象访问协议)库,主要用于构建和部署Web服务。这个版本的Axis是基于Java平台的,它为开发者提供了强大的工具集,以便于实现符合WS-I(Web Services ...

    Springboot集成axis1.4的demo

    5. **编写服务接口和实现**:在Java代码中,你需要定义服务接口,并提供其实现。例如: ```java public interface MyService { String myOperation(String param1); } public class MyServiceImpl implements ...

    AXIS1.4客户端调用

    AXIS1.4客户端调用是关于Web服务客户端开发的一个主题,主要涉及到使用Apache Axis1.4库来创建和调用SOAP(Simple Object Access Protocol)服务。Apache Axis1.4是一个开源工具,它允许开发者在Java环境中轻松地...

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

    这将生成一个服务接口和服务实现类,其中包含了调用Web服务的方法。 3. 编写Java代码:实例化生成的服务实现类,调用其方法发起Web服务请求。注意设置SOAPAction头,因为这是.NET ASMX Web服务识别操作的关键。如果...

    webservice axis1.4 开发资料

    2. **开发指南**:《Axis1.4开发指南》是理解Axis1.4的入门资料,通常会涵盖安装配置、创建服务、发布服务、调用服务等步骤,还会讲解如何处理各种错误和异常,以及如何调试Web服务。 3. **jar包**:在开发过程中,...

    axis1.4和axis2相关jar文件

    了解并熟练使用Axis1.4和Axis2的相关jar文件,对于开发和维护Web服务至关重要。这不仅可以帮助开发者快速构建服务,还能确保与现有系统和其他Web服务的互操作性。在实际项目中,应根据具体需求选择适合的版本,同时...

Global site tag (gtag.js) - Google Analytics