最近一直在做webservice的调用,刚开始双方的接口一致在变,我的调用也跟着变了N多次,但发现变来变去调用也就那么几行代码就搞定,现总结如下:
调用方式一:
RPC调用,调用比较简单,注意一下设置输入输出参数就ok。代码如下:
Service service = new Service();
try{
Call call = (Call)service.createCall();
//设置url
call.setTargetEndpointAddress(new URL(url));
//注册服务端命名空间
// QName qn = new QName("urn:server","beanName");
//注册返回值arrayList中的javabean,这里使用map代替,如果使用该bean需要服务端在wsdd文件中做相关配置
// call.registerTypeMapping(bean.class, qn,new BeanSerializerFactory(bean.class,qn), new BeanDeserializerFactory(bean.class,qn));
//设置请求服务及服务方法,具体名称需要根据wsdl来填
call.setOperation(new QName("server"), "method");
//设置返回值类型,这里返回的list
call.setReturnClass(ArrayList.class);
//设置输入参数,data1、data2需要根据wsdl中的名称来填,如果输入参数为map或list 中间参数为XMLType.XSD_HEXBINARY
call.addParameter("date1", XMLType.XSD_STRING, ParameterMode.IN);
call.addParameter("date2", XMLType.XSD_STRING, ParameterMode.IN);
Calendar cal = Calendar.getInstance();
String now = df.format(cal.getTime());
cal.add(Calendar.HOUR_OF_DAY, -1);
String pre = df.format(cal.getTime());
Object[] param = new Object[]{pre,now};
//直接调用
ArrayList returnMap = (ArrayList)call.invoke(param);
System.out.println("======" + returnMap.size());
for (Object object : returnMap) {
HashMap map = (HashMap)object;
Set<Map.Entry<String,String>> me = map.entrySet();
Iterator<Entry<String,String>> it = me.iterator();
while(it.hasNext()){
Entry<String,String> en = it.next();
System.out.println("key:" + en.getKey() + "==value:" + en.getValue());
}
}
}catch(Exception e){
e.printStackTrace();
}
详细开发配置见附件。
调用方式二:stub调用,这种调用方式需要借助axis提供的工具根据wsdl生成客户端代码(eclipse已集成该工具),生成客户端后将生成的代码拷入工程中再进行调用,调用方式很简单,见代码:
//工具会生成*serviceLocator类,通过该类调用服务端
ServiceLocator tssl = new ServiceLocator();
//通过locator类生成服务端
TService service = tssl.getTService(new URL(url));
//通过service直接调用服务端方法
HashMap returnMap = service.reqOpt(reqMap);
分享到:
相关推荐
java调用webservicejava调用webservice.zipjava调用webservice.zipjava调用webservice.zipjava调用webservice.zipjava调用webservice.zipjava调用webservice.zipjava调用webservice.zipjava调用webservice.zipjava...
调用WebService,最简单的办法当然是直接添加WEB引用,然后自动产生代理类,但是在调用JAVA的WebService时并没有这么简单,特别是对于SoapHeader的处理,通过C#添加Web引用方式访问JavaWebService的方法,除了string...
java调用webservice接口案例,精简,service调用webservice接口案例;不用生成一堆代码,逻辑清晰
JAVA调用WEBSERVICE接口
ODI(Oracle Data Integrator)是一种数据集成平台,提供了webservice接口,允许用户通过webservice调用ODI方案执行,从而实现数据的同步。 在本文档中,我们将通过 Java 应用程序调用 ODI webservice,实现数据的...
在Java中,大多数传统的WebService调用使用SOAP,这是一个基于XML的消息传递协议。SOAP消息封装在HTTP请求中,使得跨平台的数据交换成为可能。Java中的JAX-WS(Java API for XML Web Services)框架是处理SOAP ...
在探讨Java调用带有JSON参数的WebService之前,我们首先需要了解几个关键的技术概念:Java、JSON以及WebService。 Java是一种广泛使用的编程语言,它具有面向对象、跨平台、多线程以及健壮性等特点。Java在企业级...
JAVA 调用 SAP SOAP webservice 详解 在本文中,我们将详细介绍如何使用 JAVA 调用 SAP SOAP webservice,包括配置 SAP 登录信息、创建 java 项目、添加 web 服务客户端、生成 JAVA 类、调用接口等步骤。 配置 SAP...
Java Axis 直接调用webservice 接口工具类, 无需根据wsdl编译客户端,需要axis相关包,测试使用axis 1.4, 附demo引入axis包后直接可以测试;
通过阅读提供的"java-soap-webservice"文档,你可以进一步了解具体的实现步骤,包括如何设置项目、配置JAX-WS、生成客户端代码、编写调用服务的代码,以及如何解析响应。实践中,不断动手操作和调试是掌握这一技术的...
2. **创建WebService客户端**:使用WSDL(Web Service Description Language)文件,你可以自动生成Java客户端代码。Eclipse和MyEclipse都有工具可以做到这一点。WSDL文件描述了Web服务的接口、操作、消息格式等。 ...
7. **调用方法**:最后,通过`call.invoke()`方法执行实际的WebService调用。此方法接收一个参数数组,其中包含所有输入参数的值。在成功调用后,返回的结果会被转换为预期的类型(在这个例子中是`Integer`)。 8. ...
Java调用WebService工程是将Java应用程序与通过WebService接口提供的服务进行交互的过程。WebService是一种基于XML标准的、平台和语言无关的通信方式,它允许不同系统间的应用能够共享数据和服务。在Java中,我们...
本话题主要探讨如何使用Java调用由C++实现的Web服务(Webservice)。在给出的描述中,提到了通过WSDL(Web Services Description Language)文件来实现这一目标。以下是关于这个主题的详细知识点: 1. **Web服务...
Java - Webservice调用方式详解
总结来说,ASP.NET通过WebService调用Java接口的过程主要包括:部署Java WebService、在.NET项目中添加Web引用、配置项目设置、在代码中实例化并调用服务方法,以及理解背后涉及的SOAP和RMI通信机制。这个过程允许...
"Java 使用 XFire 调用 webService 接口" 在本文中,我们将学习如何使用 XFire 框架在 Java 中调用 webService 接口。XFIRE 是一个基于 Java 的开源框架,用于简化 Web 服务的开发和集成。下面,我们将通过一个简单...
Java调用WebService接口方法是Java开发中常见的任务,尤其在分布式系统和跨平台通信中扮演着重要角色。这里我们主要探讨使用Apache Axis库来实现这一功能。Apache Axis是一款开源工具,它提供了Java到SOAP(简单对象...
### Java+Webservice调用方式详解 #### 一、引言 随着互联网技术的发展与企业级应用需求的增长,Web服务(Webservice)作为一种基于XML的标准协议,在不同平台间实现服务互操作方面扮演着越来越重要的角色。Java...