`

webservice客户端调用service的两种方法

阅读更多
最近在使用webservice做系统,同时自己需要调用别人的webservice获取相应的数据,自己总结了下,将关键代码整理如下,备以后使用。

第一种方法:采用RPCServiceClient调用service

首先创建一个存储访问webservice参数的类,模板如下:

public class CallServiceBean
{
private String targetEPR;
private Object[] parameters;
private Class<?>[] returnClasses;
private String action;
private String callMethod;
public String getCallMethod()
{
  return callMethod;
}

public void setCallMethod(String callMethod)
{
  this.callMethod = callMethod;
}

public String getTargetEPR()
{
  return targetEPR;
}

public void setTargetEPR(String targetEPR)
{
  this.targetEPR = targetEPR;
}

public Object[] getParameters()
{
  return parameters;
}

public void setParameters(Object[] parameters)
{
  this.parameters = parameters;
}

public Class<?>[] getReturnClasses()
{
  return returnClasses;
}

public void setReturnClasses(Class<?>[] returnClasses)
{
  this.returnClasses = returnClasses;
}

public String getAction()
{
  return action;
}

public void setAction(String action)
{
  this.action = action;
}
}



其次编写访问并接受service返回的参数的代码:

import org.apache.axis2.rpc.client.RPCServiceClient;



/**
  * 组织webservice调用参数
  * @param departmentCode
  * @param password
  * @param MaxDateTime
  * @return
  */
public CallServiceBean getCallServiceBean(String departmentCode,String password,String MaxDateTime){
  CallServiceBean callServiceBean = new CallServiceBean();

//wsdl地址
  callServiceBean.setTargetEPR(http://127.0.0.1:5888/services/childService?wsdl);

//参数列表
  callServiceBean.setParameters(new Object[]{departmentCode,password,MaxDateTime});

//调用的wsdl方法
  callServiceBean.setCallMethod("downloadImmunization");

//设置接受service返回的参数类型
  callServiceBean.setReturnClasses(new Class[]{DataHandler.class});
  return callServiceBean;
}



/**
  * 获取WebService数据
  * callServiceBean 保存调用webservice的参数
  */
public Object[] callReturnService(CallServiceBean callServiceBean) {
  try {
   RPCServiceClient serviceClient = new RPCServiceClient();
   Options options = serviceClient.getOptions();
   // 指定调用 WebService的 URL
   EndpointReference targetEPR = new EndpointReference(callServiceBean.getTargetEPR());
   options.setTo(targetEPR);
   if (null != callServiceBean.getAction()) {
    options.setAction(callServiceBean.getAction());
   }
   //options.setTimeOutInMilliSeconds(80000000);
   // 指定调用方法的参数值
   Object[] opAddEntryArgs = callServiceBean.getParameters() == null ? new Object[] {} : callServiceBean.getParameters();
   // 指定要调用的方法及 WSDL文件的命名空间
   QName opAddEntry = new QName(Constants.NUL, callServiceBean.getCallMethod());
   return serviceClient.invokeBlocking(opAddEntry, opAddEntryArgs, callServiceBean.getReturnClasses());
  } catch (RemoteException e) {
   e.printStackTrace();
   //增加线程休眠
   try {
    Thread.sleep(5000);
   } catch (InterruptedException e1) {
    e1.printStackTrace();
   }
  }
  return null;
}



注意:这里的参数列表String departmentCode,String password,String MaxDateTime,自己可以根据自己的实际需要来定义。



第二种方法,采用cxf的代理工厂bean

代码如下:

import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;



JaxWsProxyFactoryBean jwpf = new JaxWsProxyFactoryBean();// 代理工厂Bean

  jwpf.setServiceClass(IWsEhrIndexBO.class);
  jwpf.setAddress("http://localhost:8080/WSReceiveData/services/ehrIndex");
  IWsEhrIndexBO client = (IWsEhrIndexBO) jwpf.create();
  EhrIndex ehrIndex = new EhrIndex();
  ehrIndex.setEhrId("wme32613");
  ehrIndex.setPatientId("58600820120423000001");
  ehrIndex.setSystemCode("SZ000001-10");
  ehrIndex.setCreateUnit("SZ586005");
  List<EhrIndex> list = new ArrayList<EhrIndex>();
  list.add(ehrIndex);
  client.saveEhrIndex(list);

注意:如果有返回类型,可以采用cxf的客户端生成对应的接收参数的类来接收这个返回值(可以参见cxf官方文档说明),自己根据实际需要,从返回值中提取对自己有用的信息。
分享到:
评论

相关推荐

    springboot+webservice搭建webservice服务端及使用java客户端两种方式进行调用webservice接口

    本教程将讲解如何使用Spring Boot集成Apache CXF(一个强大的Java Web Service框架)来构建服务端,并探讨两种Java客户端调用Web Service接口的方法。 首先,我们需要理解Spring Boot与CXF的整合。Spring Boot通过...

    webservice 客户端 服务端实例 代码

    创建一个WebService服务端,首先需要定义服务接口,这个接口会包含一些公开的方法,供客户端调用。在Java中,可以使用JAX-WS(Java API for XML Web Services)框架来实现。服务端主要包含以下步骤: - 定义服务...

    客户端编程方式调用webservice

    在本案例中,文件`ws_client03`可能包含了客户端调用WebService的代码示例,而`ws_server`则可能是WebService的服务端实现。通常,服务器端代码会定义服务接口和实现,然后通过一个容器(如Tomcat)部署,使其可以...

    cxf_axis_xfire客户端调用的几种方法[收集].pdf

    在本文中,我们将重点关注CXF客户端调用Web服务的方法,特别是处理Map类型参数的问题。 首先,CXF客户端调用Web服务时,通常会通过服务接口类来实现。在给出的示例中,`TestService`接口定义了几个服务方法,如`...

    webService客户端和调用服务

    7. **调用Web服务**:客户端通过实例化服务代理类并调用其方法来发起请求。请求被封装成SOAP消息,然后通过HTTP或HTTPS发送到服务端。服务端处理请求后,返回响应,客户端解析响应内容并进行后续处理。 8. **异常...

    cxf开发webservice客户端和服务器端文档

    CXF提供了两种开发方法:WSDL-First和Code-First。WSDL-First方法首先编写WSDL文件,然后从WSDL文件生成服务桩、调用桩和部分服务代码。Code-First方法首先实现服务,然后抽象出服务的远程调用接口,然后利用CXF生成...

    C# WebService 客户端 服务器 Json

    这两种技术都可以创建SOAP(Simple Object Access Protocol)和RESTful类型的WebService,后者更倾向于使用Json进行数据传输。 二、C# WebService客户端 1. ASMX客户端:在C#中调用一个ASMX WebService,可以通过`...

    Xfire客户端调用webservice jar包

    在这个场景下,"Xfire客户端调用webservice jar包"是指Xfire客户端为了实现某些功能,如获取服务器数据或更新信息,需要调用Web服务的接口。这些接口通常以Java的jar包形式提供,方便开发者集成到他们的应用中。 ...

    webservice的动态调用和静态调用

    这两种方法各有特点,适用于不同的场景。 静态调用是通过在项目中添加Web引用或者服务引用来实现的。这种调用方式在编译时就已经确定了服务接口,因此也被称为强类型调用。在.NET环境中,例如使用C#或VB.NET开发时...

    .net调用webservice接口例子

    Web Service是一种基于XML(可扩展标记语言)的标准化方法,用于在不同应用程序之间共享数据和服务。它通过SOAP(简单对象访问协议)进行通信,SOAP消息通常封装在HTTP请求中,使得跨网络的通信变得更加便捷。 在...

    delphi webservice客户端

    在本文中,我们将深入探讨如何使用Delphi 2007创建一个Webservice客户端,以便调用远程Web服务并处理返回的数据。Web服务通常使用SOAP(简单对象访问协议)进行通信,允许不同平台的应用程序之间交换数据。 首先,...

    webservice接口调用工具类依赖jar包

    WebService接口调用工具类是Java开发中常见的一种技术,用于与远程服务进行通信,尤其在集成不同系统或服务时非常关键。在这个场景中,"webservice接口调用工具类依赖jar包"指的是为了实现对WebService接口的调用,...

    webservice项目客户端和服务端

    4. **多种编程模型**:Axis2提供了两种编程模型,即服务 Archive (SAR) 和Web Application Archive (WAR),分别适合于简单的服务和复杂的企业级应用。 5. **工具集**:Axis2提供了一整套工具,如wsdl2java用于生成...

    webservice调用,传参代码样例

    Web服务(WebService)是一种基于标准协议的,可互操作的软件接口,允许不同系统之间进行数据交换和功能调用。在本案例中,我们将重点讨论如何使用Axis框架来调用Web服务并传递参数。 首先,我们需要理解Web服务的...

    webService通用客户端测试工具

    Web服务的实现通常遵循SOAP(Simple Object Access Protocol)或REST(Representational State Transfer)两种主要架构风格。SOAP是一种基于XML的协议,主要用于在分布式环境中交换结构化的、机器可读的数据。而REST...

    PB 调用webservice 几种方式

    这种方式需要手动构建和解析XML消息,虽然灵活性高,但相比前两种方法,开发工作量会增加。 4. **JDBC/ODBC Bridge to Web Services**: 对于已经具备数据库连接能力的应用,PB 11.5也提供了通过JDBC或ODBC桥接器...

    java调用webservice的demo

    3. **客户端调用流程**: - **获取WSDL**:首先,客户端需要知道服务的WSDL地址,这是服务的接口定义,包含了服务的端点地址、操作方法和输入/输出参数。 - **生成Stub**:使用工具(如JAXB或 wsimport 命令)根据...

    webService调用实例 Demo

    3. Java源代码:包含客户端和服务端的实现,包括Web Service的调用方法以及数据处理逻辑。 4. 可能还包括README或其他文档,解释如何构建、运行和理解这些示例。 在学习这个Demo时,你应该关注以下几个关键知识点:...

    WebService开发服务端的两种方式:jdk、cxf

    本文将详细介绍使用JDK和CXF两种方式来开发WebService服务端。 一、JDK原生实现WebService(JAX-WS) 1. **JAX-WS概述**:Java API for XML Web Services (JAX-WS) 是Java平台上用于构建Web服务和客户端的API。它...

    webservice发布与调用

    调用WebService分为静态调用和动态调用两种方式: - **静态调用**:通过WSDL文件生成客户端代理类,然后像调用本地方法一样调用WebService。例如,在Java中,可以使用wsimport工具从WSDL生成客户端代码。 - **动态...

Global site tag (gtag.js) - Google Analytics