调用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服务端和客户端代码”中,我们将探讨如何使用Visual Studio 2013和.NET Framework 4.5来实现这一目标。 首先,让我们深入理解Web Service的工作原理。Web Service基于标准的协议...
- 对于客户端调用,可以使用CXF的`JaxWsProxyFactoryBean`创建服务代理对象,然后调用其方法进行服务调用。 4. **项目结构** - `.classpath`和`.project`是Eclipse IDE的项目配置文件。 - `pom.xml`是Maven的...
本主题将深入探讨如何使用C#作为客户端来调用Java编写的WebService。WebSocket服务提供了平台无关的通信方式,使得不同编程语言间的数据交换变得可能。下面我们将详细讨论这个过程。 首先,了解WebService的基本...
通过这个实例,我们不仅学习了如何使用`wsimport`生成WebService客户端代码,还了解了如何在Java中调用这些代码与服务进行通信。这个过程对于理解Web服务的工作原理和Java的WebService客户端开发非常有帮助。在实际...
本篇将深入探讨如何使用JavaScript来调用WebService客户端,以实现跨平台的数据交互。 首先,WebService是一种基于XML(Extensible Markup Language)的标准,它允许不同系统之间通过HTTP协议交换数据。一个...
添加完成后,可以编写如下代码调用WebService: ```csharp private void btn_Static_Click(object sender, EventArgs e) { // 实例化WebService的客户端类 CallWebService.TestWebSoapClient client = new ...
总的来说,创建Java版的WebService客户端并不复杂,关键在于理解SOAP协议和WSDL文件的作用,以及如何利用Java提供的工具生成和使用客户端代码。通过本文的讲解,你应该能够独立地编写出与WebService交互的Java客户端...
使用axis2创建webservice步骤以及客户端调用service服务代码,如何编写和发布WebService,如何使用services.xml配置文件发布,如何用Java实现调用WebService的客户端程序等等
在PB(PowerBuilder)中调用WebService是一种常见的技术操作,用于让PB应用程序与Web服务进行交互,实现数据的远程调用和交换。本篇将详细解释如何在PB中调用WebService,以及涉及到的相关知识点。 首先,理解...
总结起来,使用Axis2发布Web服务和生成客户端代码调用服务是一个标准化的过程,涉及到服务的编写、打包、部署以及客户端的代码生成和调用。了解并熟练掌握这一过程,对进行Java Web服务开发至关重要。在实际开发中,...
在本主题中,我们将深入探讨myEclipse 6.5版本中如何创建和使用Web服务,即Webservice的服务器端和客户端代码。myEclipse是一款强大的集成开发环境(IDE),特别适用于Java EE应用的开发,包括Web服务。 首先,让...
了解这些知识点不仅有助于编写灵活的客户端代码,还能增强对分布式系统交互的理解。在实际项目中,根据Web服务的特性选择合适的调用方式,如使用`SoapHttpClientProtocol`、`WebClient`或`HttpClient`,将有助于提高...
生成WebService客户端代码的过程通常涉及以下步骤: 1. **WSDL(Web Services Description Language)**:WSDL文件是WebService的接口定义,它描述了服务的可用操作、输入、输出以及如何访问这些服务。在本例中,你...
CXF可以基于WSDL生成客户端代码,也可以直接使用JAX-WS API编写客户端。此外,CXF还支持动态客户端,允许在运行时发现并调用服务。 3. HttpClient:Apache HttpClient是一个通用的HTTP客户端库,虽然不是专门设计...
- **生成客户端代码**:使用wsimport工具生成客户端代码,以便调用服务。 - **运行客户端**:在客户端程序中实例化服务代理类,调用服务方法。 **4. JAX-RS简介** JAX-RS是Java中处理RESTful Web服务的标准API。...
- `JinWebserviceClient.java`:这可能是客户端代码,负责调用WebService。它会使用JAX-WS提供的API(如`javax.xml.ws.Service`)来创建一个代理对象,通过这个对象可以像调用本地方法一样调用远程WebService。 - ...
动态调用Webservice是指在运行时根据需要创建并执行Web服务的方法,无需预先编译或硬编码调用的详细信息。这种灵活性允许开发者在不完全了解服务接口的情况下使用服务,只需知道服务的URL和WSDL(Web服务描述语言)...
#### 三、编写存储过程调用 WebService ##### 3.1 创建 WebService 类型的扩展存储过程 在 SQL Server 中,可以通过创建一个扩展存储过程来调用 Web Service。具体步骤如下: 1. **定义 WebService 类型**:首先...
在 Java 中,调用 WebService 接口通常涉及使用 Apache CXF 或其他类似的库来生成客户端代码并进行调用。以下是具体的步骤: ##### 1. 官方下载网址与安装 首先,需要从 Apache CXF 的官方网站下载相应的工具包。...
标题中的“PB调用JAVA WEBSERVICE实例”指的是使用PowerBuilder(PB)应用程序调用由Java编写的Web服务。在企业级应用开发中,不同语言之间的互操作性是非常重要的,而Web服务提供了一种标准的方式来实现这一点。让...