`
talentluke
  • 浏览: 600905 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

调用WebService服务客户端代码编写

 
阅读更多
调用WebService服务客户端代码编写
 
目前比较流行的提供远程服务的技术中,WebService算是比较流行之一。因此,在调用WebService远程服务的客户端代码也是我们经常碰到的。本人把自己在开发中调用WebService远程服务的客户端代码总结下,算是留个笔记,方便以后使用。
1.使用Axis调用
    如果提供的远程服务方法传入的参数都是简单类型,可以不用生成客户端代码,直接手动编写调用远程服务代码。
    查看wsdl描述文件,wsdl:portType 暴露的是远程接口名称;wsdl:operation 对应的name 为远程接口暴露的方法,一般情况下 wsdl:definitions 定义的targetNamespace对应的是接口的包的反向。
 
import java.net.URL;
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;

public class AxisClientSample {
 public static void main(String[] args) throws Exception {
  String[] recipients = new String[]{}; //收件人
  String strSubject = "";               //主题
  String strContent = "";      //内容
  String[] ccRecipients = new String[]{}; //抄送人
  String[] bccRecipients = null;     //密送人
  
  String endPoint = "http://service_host:port/appProject/services/XXXXService";
  Service server = new Service();
  Call call = (Call) server.createCall();
  call.setTargetEndpointAddress(new URL(endPoint));
  //call.getMessageContext().setUsername("username");  //如果远程方法需要用户名和密码验证时
  //call.getMessageContext().setPassword("password");
  String resp = (String) call.invoke("exposeMethod", new Object[]{recipients,strSubject,strContent,ccRecipients,bccRecipients});
  System.out.println(resp);
 }
}
 
如果参数是复杂类型或者自定义pojo时,使用Axis对wsdl文件生成客户端代码,使用Axis的WSDL2JAVA生成客户端代码,编写调用代码如下:
   XXXXServiceService service = new XXXXXLocator(); //获取远程服务
   XXXXService stub = service.getXXXXService();  //XXXXService是远程服务接口类
   //构建参数args  , 实际调用远程服务方法
    stub.exposeMethod(args);
 
2.XFire 调用
 方法同上,简单参数可以直接手写调用代码,复杂类型可以生成客户端代码。(为方便,当然手动也是可以的,如果你不嫌麻烦的话 -:))
XFire 需要得到远程服务的接口类,可以根据wsdl描述得到对应的包名,接口名称和方法名,手动编写接口类,比如 XXXService.
 
import java.net.MalformedURLException;
import org.codehaus.xfire.XFireFactory;
import org.codehaus.xfire.client.XFireProxyFactory;
import org.codehaus.xfire.service.Service;
import org.codehaus.xfire.service.binding.ObjectServiceFactory;
 
public class XFireClientSample {
 public static void main(String[] args) {
  Service srModel = new ObjectServiceFactory().create(XXXService.class);
  XFireProxyFactory factory = new XFireProxyFactory(XFireFactory.newInstance().getXFire());
  String endPoint = "http://service_host:port/app/services/XXXService";
  try {
   XXXService service = (XXXService) factory.create(srModel, endPoint);
   String[] recipients = new String[] {}; // 收件人
   String strSubject = ""; // 主题
   String strContent = ""; // 内容
   String[] ccRecipients = new String[] {}; // 抄送人
   String[] bccRecipients = null; // 密送人
   System.out.print("提交返回:" + service.getMethod(recipients, strSubject, strContent, ccRecipients, bccRecipients));
  } catch (MalformedURLException e) {
   e.printStackTrace();
  }
 }
}
 
3.使用CXF 调用
 
import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;
import test.demo.service.XXXService;
public class CXFClientSample {
 public static void main(String[] args) throws Exception{
  JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
  factory.setAddress("http://remote_host:port/service/XXXService");
  factory.setServiceClass(XXXService.class);
  XXXService service = (XXXService) factory.create();
  String username="sample";
  String response = service.executeMethod(username);
  System.out.println(response);
 }
}
 
上述三种方式都是针对简单参数,简单方法等的调用,无需生成客户端代码等麻烦过程。如果是复杂的话,使用对应的技术的生成客户端代码也是很快的,可以尽快完成自己的工作任务。
分享到:
评论

相关推荐

    C#创建和调用WebService服务端和客户端代码

    在这个项目“C#创建和调用WebService服务端和客户端代码”中,我们将探讨如何使用Visual Studio 2013和.NET Framework 4.5来实现这一目标。 首先,让我们深入理解Web Service的工作原理。Web Service基于标准的协议...

    springboot整合CXF发布webservice和客户端调用

    - 对于客户端调用,可以使用CXF的`JaxWsProxyFactoryBean`创建服务代理对象,然后调用其方法进行服务调用。 4. **项目结构** - `.classpath`和`.project`是Eclipse IDE的项目配置文件。 - `pom.xml`是Maven的...

    js调用webservice客户端编写

    本篇将深入探讨如何使用JavaScript来调用WebService客户端,以实现跨平台的数据交互。 首先,WebService是一种基于XML(Extensible Markup Language)的标准,它允许不同系统之间通过HTTP协议交换数据。一个...

    清风教你手把手-写WebService客户端代码(Java版本)

    总的来说,创建Java版的WebService客户端并不复杂,关键在于理解SOAP协议和WSDL文件的作用,以及如何利用Java提供的工具生成和使用客户端代码。通过本文的讲解,你应该能够独立地编写出与WebService交互的Java客户端...

    使用axis2创建webservice步骤以及客户端调用service服务代码

    使用axis2创建webservice步骤以及客户端调用service服务代码,如何编写和发布WebService,如何使用services.xml配置文件发布,如何用Java实现调用WebService的客户端程序等等

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

    总结起来,使用Axis2发布Web服务和生成客户端代码调用服务是一个标准化的过程,涉及到服务的编写、打包、部署以及客户端的代码生成和调用。了解并熟练掌握这一过程,对进行Java Web服务开发至关重要。在实际开发中,...

    myEclipse 6.5 webservice 服务器端和客户端代码

    在本主题中,我们将深入探讨myEclipse 6.5版本中如何创建和使用Web服务,即Webservice的服务器端和客户端代码。myEclipse是一款强大的集成开发环境(IDE),特别适用于Java EE应用的开发,包括Web服务。 首先,让...

    java版WebService生成客户端和服务端的实例

    从准备必要的jar包,到编写服务接口和实现,再到生成和部署服务,以及创建客户端并调用服务,这一系列过程涵盖了WebService开发的关键步骤。理解并掌握这些知识,将有助于你在实际工作中灵活运用WebService进行跨...

    C# 动态调用WebService服务

    了解这些知识点不仅有助于编写灵活的客户端代码,还能增强对分布式系统交互的理解。在实际项目中,根据Web服务的特性选择合适的调用方式,如使用`SoapHttpClientProtocol`、`WebClient`或`HttpClient`,将有助于提高...

    webservice 客户端自动生成工具

    生成WebService客户端代码的过程通常涉及以下步骤: 1. **WSDL(Web Services Description Language)**:WSDL文件是WebService的接口定义,它描述了服务的可用操作、输入、输出以及如何访问这些服务。在本例中,你...

    C# 调用WebService的方法

    添加完成后,可以编写如下代码调用WebService: ```csharp private void btn_Static_Click(object sender, EventArgs e) { // 实例化WebService的客户端类 CallWebService.TestWebSoapClient client = new ...

    WebService调用的几种方式

    CXF可以基于WSDL生成客户端代码,也可以直接使用JAX-WS API编写客户端。此外,CXF还支持动态客户端,允许在运行时发现并调用服务。 3. HttpClient:Apache HttpClient是一个通用的HTTP客户端库,虽然不是专门设计...

    java调用webservice工程

    - **生成客户端代码**:使用wsimport工具生成客户端代码,以便调用服务。 - **运行客户端**:在客户端程序中实例化服务代理类,调用服务方法。 **4. JAX-RS简介** JAX-RS是Java中处理RESTful Web服务的标准API。...

    WebService调用代码样例

    - `JinWebserviceClient.java`:这可能是客户端代码,负责调用WebService。它会使用JAX-WS提供的API(如`javax.xml.ws.Service`)来创建一个代理对象,通过这个对象可以像调用本地方法一样调用远程WebService。 - ...

    解析及动态调用Webservice程序

    动态调用Webservice是指在运行时根据需要创建并执行Web服务的方法,无需预先编译或硬编码调用的详细信息。这种灵活性允许开发者在不完全了解服务接口的情况下使用服务,只需知道服务的URL和WSDL(Web服务描述语言)...

    使用wsimport命令生成webService客户端代码实例(查询手机号码)(源码Demo)

    通过这个实例,我们不仅学习了如何使用`wsimport`生成WebService客户端代码,还了解了如何在Java中调用这些代码与服务进行通信。这个过程对于理解Web服务的工作原理和Java的WebService客户端开发非常有帮助。在实际...

    java调用json参数的webservice

    为了使得Java客户端能够调用WebService服务,需要使用一些工具,例如JAX-WS(Java API for XML Web Services),它是Java SE的一部分,用于创建WebService客户端和服务端。 综上所述,通过Java调用带有JSON参数的...

    nodejs和Java调用webservice接口总结.docx

    在 Java 中,调用 WebService 接口通常涉及使用 Apache CXF 或其他类似的库来生成客户端代码并进行调用。以下是具体的步骤: ##### 1. 官方下载网址与安装 首先,需要从 Apache CXF 的官方网站下载相应的工具包。...

    SQLServer存储过程调用WebService

    #### 三、编写存储过程调用 WebService ##### 3.1 创建 WebService 类型的扩展存储过程 在 SQL Server 中,可以通过创建一个扩展存储过程来调用 Web Service。具体步骤如下: 1. **定义 WebService 类型**:首先...

    SqlServer触发器调用WebService

    通过这种方式,可以在无需编写额外的客户端代码的情况下实现数据的实时传递。这对于需要跨系统同步数据的场景非常有用,比如在生产环境中实时发送消息通知相关人员。此外,这种方法还可以方便地扩展到其他类型的Web...

Global site tag (gtag.js) - Google Analytics