公司要将开发一个移动端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 合肥
相关推荐
本方法是用axis1.4技术,实现java客户端调用webservice。已经可实现过可行的,如果不行可加我QQ号302633进行详细解析。
3. **创建WebService**:在Spring Boot应用中,你可以通过Axis1.4创建一个WebService。首先,定义一个Java类,包含你想要公开的方法。然后,使用Axis的工具生成服务端点接口和服务类。 4. **配置Spring Boot**:...
在这个"AXIS1.4 WebService服务端和客户端例子"中,我们将深入探讨如何使用AXIS1.4搭建服务端和客户端,以及如何进行远程调用。 首先,让我们从服务端开始。服务端是提供Web服务的系统,它可以接收客户端的请求并...
- **创建Web服务**:通过编写Java类并使用特定的注解,Axis1.4可以自动将其暴露为SOAP服务。 - **消费Web服务**:使用Axis1.4提供的客户端工具,可以自动生成Java客户端代理类,方便调用远程SOAP服务。 - **处理WSDL...
Java调用.NET的WebService接口实例,jar包删减到三个,干净清爽,里面包含注多注释和图解,搞了半天的家伙拿出来与大家分享,无任何BUG,修改里面的参数即可直接运行,对于这种好东西,花了半天时间10分不算高,重在...
Axis1.4是Axis的一个版本,它是一个Java实现的Web服务框架,支持SOAP、WSDL和WS-I基本配置。它的主要功能包括发布Web服务、创建Web服务客户端以及处理Web服务的调用。 3. **使用Axis1.4生成客户端**: - **步骤1...
2. **创建Web服务**:编写Java类,定义服务接口和实现。 Axis1.4会根据这些类自动生成Web服务所需的部署描述文件(wsdd)和JavaServer Pages(JSP)。 3. **生成服务端**:使用`wsdl2java`命令,将Java类转换为WSDL...
标题中的“手写Axis1.4发布WebService以及客户端调用”指的是使用Apache Axis1.4框架来创建和消费Web服务的过程。Apache Axis是用于构建Web服务的一个开源工具,它允许开发者将Java类转换为Web服务,并且提供客户端...
Axis1.4是Apache组织提供的一款基于Java的Web服务框架,它允许开发者轻松地创建、发布和调用Web服务。本文将深入探讨如何使用Axis1.4.jar包以及Eclipse IDE来实现WSDL(Web Service Description Language)和服务端...
Spring Boot以其简化配置和快速开发能力而受到广泛欢迎,而Axis1.4是Apache软件基金会的一个开源项目,主要用于生成和消费SOAP Web服务。当我们需要在Spring Boot应用程序中集成Web服务时,Axis1.4提供了一个强大的...
为了能够通过Axis 1.4客户端调用上面部署的WebService,需要对生成的WSDL文件进行一定的修改,使其符合Axis 1.4的要求。 **步骤四:修改WSDL文件** 1. **下载WSDL文件**:通过访问服务的WSDL URL将其保存为`...
在本项目中,Axis1.4 被用于实现 Web 服务的发布和调用,使得其他应用程序可以通过网络接口与我们的服务进行通信。 接下来,MyBatis3 是一个优秀的持久层框架,它简化了数据库操作。MyBatis3 提供了灵活的 SQL 编写...
- **WSDL生成器**:可以从Java类自动生成WSDL文档,反之亦然,这使得服务的定义和实现更加紧密相连。 - **扩展性**:Axis1.4允许用户通过编写处理链和消息处理器来扩展其功能,以满足特定需求。 **3. 搭建Axis1.4...
在这个"WebService Axis1.4接口服务序列/反序列复杂项目实例"中,我们将深入探讨如何在 Axis1.4 中处理复杂的参数、自定义实体对象的序列化与反序列化,以及客户端的复杂调用。 首先,让我们理解序列化和反序列化的...
Axis1.4是Apache软件基金会开发的一个开源SOAP(简单对象访问协议)库,主要用于构建和部署Web服务。这个版本的Axis是基于Java平台的,它为开发者提供了强大的工具集,以便于实现符合WS-I(Web Services ...
5. **编写服务接口和实现**:在Java代码中,你需要定义服务接口,并提供其实现。例如: ```java public interface MyService { String myOperation(String param1); } public class MyServiceImpl implements ...
AXIS1.4客户端调用是关于Web服务客户端开发的一个主题,主要涉及到使用Apache Axis1.4库来创建和调用SOAP(Simple Object Access Protocol)服务。Apache Axis1.4是一个开源工具,它允许开发者在Java环境中轻松地...
这将生成一个服务接口和服务实现类,其中包含了调用Web服务的方法。 3. 编写Java代码:实例化生成的服务实现类,调用其方法发起Web服务请求。注意设置SOAPAction头,因为这是.NET ASMX Web服务识别操作的关键。如果...
2. **开发指南**:《Axis1.4开发指南》是理解Axis1.4的入门资料,通常会涵盖安装配置、创建服务、发布服务、调用服务等步骤,还会讲解如何处理各种错误和异常,以及如何调试Web服务。 3. **jar包**:在开发过程中,...
了解并熟练使用Axis1.4和Axis2的相关jar文件,对于开发和维护Web服务至关重要。这不仅可以帮助开发者快速构建服务,还能确保与现有系统和其他Web服务的互操作性。在实际项目中,应根据具体需求选择适合的版本,同时...