java_调用Webservice接口

合集下载

java调用WebService(客户端)

java调用WebService(客户端)

java调用WebService(客户端)看下了网上大部分都是写java来编写WS服务端,小编这边就小写了下JAVA的调用端。

WebService可以有Get、Post、Soap、Document四种方式调用,以下是四种方式的参照说明。

对于SOAP协议多写了个CXF的调用(对于CXF必须有以下包:)以下是调用代码import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.OutputStream;import java.io.OutputStreamWriter;import .URL;import .URLConnection;import .URLEncoder;import org.apache.cxf.endpoint.Client;import org.apache.cxf.jaxws.endpoint.dynamic.JaxWsDynamicClientFactory;/*** 功能描述:WebService调用**/public class ClientTest {/*** 功能描述:HTTP-GET**/public String get() {URL url;BufferedReader bin = null;StringBuilder result = new StringBuilder();try {String urlTemp = "//WebServices/WeatherWebService.asmx/getSupportCity?byProvin ceName="+ URLEncoder.encode("福建", "UTF-8");// URLEncoder用来参数编码url = new URL(urlTemp);InputStream in = url.openStream(); // 请求bin = new BufferedReader(new InputStreamReader(in, "UTF-8"));String s = null;while ((s = bin.readLine()) != null) {result.append(s);}} catch (Exception e) {e.printStackTrace();} finally {if (null != bin) {try {bin.close();} catch (IOException e) {e.printStackTrace();}}}return result.toString();}/*** 功能描述:HTTP-POST**/public String post() {OutputStreamWriter out = null;StringBuilder sTotalString = new StringBuilder();try {URL urlTemp = new URL("/WebServices/WeatherWebService.asmx/getSupportCity");URLConnection connection = urlTemp.openConnection();connection.setDoOutput(true);out = new OutputStreamWriter(connection.getOutputStream(), "UTF-8");StringBuffer sb = new StringBuffer();sb.append("byProvinceName=福建");out.write(sb.toString());out.flush();String sCurrentLine;sCurrentLine = "";InputStream l_urlStream;l_urlStream = connection.getInputStream();// 请求BufferedReader l_reader = new BufferedReader(new InputStreamReader(l_urlStream));while ((sCurrentLine = l_reader.readLine()) != null) {sTotalString.append(sCurrentLine);}} catch (Exception e) {e.printStackTrace();} finally {if (null != out) {try {out.close();} catch (IOException e) {e.printStackTrace();}}}return sTotalString.toString();}/*** 功能描述:请求HTTP-SOAP**/public String getSoapInputStream() {try {String soap = "<?xml version=\"1.0\" encoding=\"utf-8\"?><soap:Envelope xmlns:xsi=\"/2001/XMLSchema-instance\"xmlns:xsd=\"/2001/XMLSchema\"xmlns:soap=\"/soap/envelope/\"><soap:Body><getSupportCity xmlns=\"/\"><byProvinceName></byProvinceName></getSupportCity></ soap:Body></soap:Envelope>";URL url = new URL("/WebServices/WeatherWebService.asmx?wsdl");URLConnection conn = url.openConnection();conn.setUseCaches(false);conn.setDoInput(true);conn.setDoOutput(true);conn.setRequestProperty("Content-Length", Integer.toString(soap.length()));conn.setRequestProperty("Content-Type", "text/xml; charset=utf-8");conn.setRequestProperty("SOAPAction","/getSupportCity");OutputStream os = conn.getOutputStream();OutputStreamWriter osw = new OutputStreamWriter(os, "utf-8");osw.write(soap);osw.flush();osw.close();StringBuilder sTotalString = new StringBuilder();String sCurrentLine = "";InputStream is = conn.getInputStream();BufferedReader l_reader = new BufferedReader(new InputStreamReader(is));while ((sCurrentLine = l_reader.readLine()) != null) {sTotalString.append(sCurrentLine);}return sTotalString.toString();} catch (Exception e) {e.printStackTrace();return null;}}/*** 功能描述:使用CXF 请求HTTP-SOAP**/public String soap() {JaxWsDynamicClientFactory clientFactory = JaxWsDynamicClientFactory.newInstance();String url = "/webservices/qqOnlineWebService.asmx?wsdl";//:17001/DefDispatcher/dispatche?wsdlClient clientTemp = clientFactory.createClient(url);Object[] arg;String result = "";try {arg = clientTemp.invoke("qqCheckOnline", "8698053");// 查询8698053在线状态,QQ号码// String,默认QQ号码:8698053。

java webservice 接口实现方式

java webservice 接口实现方式

java webservice 接口实现方式摘要:1.Java WebService 简介2.Java WebService 接口实现方式2.1 JAX-RPC2.2 JAX-WS2.3 JAX-WS RI2.4 JAXB正文:【Java WebService 简介】Java WebService 是一种基于Java 语言的Web 服务技术,它允许Java 开发人员创建可与其他应用程序进行交互的Web 服务。

Java WebService 技术可以帮助开发人员实现跨平台、跨语言的通信,从而满足不同应用程序之间的集成需求。

【Java WebService 接口实现方式】Java WebService 有多种接口实现方式,下面将详细介绍其中的四种:【2.1 JAX-RPC】Java API for XML RPC (JAX-RPC) 是Java WebService 的一种接口实现方式,它使用XML 格式来表示数据和方法调用。

JAX-RPC 通过将Java 对象编码为XML,然后将其发送到服务器进行解码和处理,从而实现客户端和服务器之间的通信。

【2.2 JAX-WS】Java API for XML Web Services (JAX-WS) 是Java WebService 的另一种接口实现方式,它基于XML 和WSDL(Web 服务描述语言)来描述Web 服务的接口和功能。

JAX-WS 允许开发人员使用类似于RPC 的方式来调用Web 服务,同时也支持更加复杂的Web 服务功能,如事务、安全和可靠的数据传输。

【2.3 JAX-WS RI】JAX-WS RI(Reference Implementation)是JAX-WS 的一个参考实现,它提供了一个用于创建和部署Web 服务的工具集。

JAX-WS RI 支持多种传输协议,如HTTP、HTTPS 和JMS,同时还支持多种数据格式,如XML、JSON 和Text。

javawebservice接口调用实例

javawebservice接口调用实例

Java Web Service 是一种轻量级的、基于标准的 Web 协议进行通讯的服务。

它允许在异构系统之间进行交互,并支持跨评台。

在本篇文章中,我们将介绍如何在 Java 中使用 Web Service 接口进行调用的实例。

1. 确定 Web Service 接口我们需要确定要调用的 Web Service 接口。

通常情况下,我们可以通过 WSDL(Web Services Description Language)文档来获取接口的相关信息,包括接口的位置区域、方法名以及参数列表等。

2. 创建 Java 项目在 Eclipse 或者其他 Java 开发环境中,我们可以创建一个新的 Java 项目。

在项目中,我们需要引入相关的 Web Service 库,以便在代码中进行调用。

3. 生成客户端代码通过 WSDL 文档,我们可以使用工具来生成客户端代码。

这些工具通常包括 wsimport(用于生成客户端代码)等。

生成的客户端代码将包含接口的相关信息,以便我们在代码中进行调用。

4. 编写调用代码在生成客户端代码之后,我们可以编写调用代码来实现对 Web Service 接口的调用。

在代码中,我们需要首先创建对应的 WebService 客户端实例,然后通过该实例来调用接口中的方法。

5. 编译和运行完成代码编写之后,我们需要对代码进行编译,并运行相应的测试。

在运行的过程中,我们可以观察接口的调用情况,以及调用结果。

6. 处理异常情况在实际的调用过程中,我们经常会遇到各种异常情况,比如网络连接失败、接口调用超时等。

我们需要在代码中添加相应的异常处理逻辑,以保证程序的稳定性和可靠性。

通过以上步骤,我们可以实现在Java 中对Web Service 接口的调用。

通过这种方式,我们可以实现不同系统之间的数据交互,实现数据共享和系统集成。

我们也可以利用 Web Service 在不同评台之间实现数据的传输和处理,为企业的信息化建设提供更多的可能性。

java webservice几种调用方式

java webservice几种调用方式

java webservice几种调用方式Java Web Service是一种流行的技术,用于通过网络在不同系统之间实现通讯和集成。

在Java中,有多种方式可以调用Web Service。

下面将介绍几种常用的调用方式。

1.使用SOAP(Simple Object Access Protocol)协议SOAP是一种基于XML的通讯协议,可以在网络上使用HTTP、SMTP等协议发送和接收消息。

在Java中,可以使用SOAP协议调用Web Service。

SOAP使用WSDL(Web Services Description Language)来描述Web Service的接口和功能。

可以使用轻量级的SOAP框架Apache CXF或Metro来创建和调用SOAP Web Service。

调用方式主要包括以下几步:-创建一个Java类来表示Web Service的接口,并使用注解来定义接口的操作。

-使用工具,如Apache CXF或Metro,将该类生成WSDL文档。

-使用WSDL文档生成客户端代码,以便在调用Web Service时使用。

-创建一个客户端程序,通过调用生成的客户端代码来调用Web Service的方法。

2.使用JAX-WS(Java API for XML Web Services)标准JAX-WS是一种Java的Web Service规范,它提供了一种简单的方式来创建和调用Web Service。

JAX-WS提供了注解,用于将Java类转换为Web Service,并且可以使用Java的代理类来调用Web Service 的方法。

调用方式包括以下几步:-创建一个Java类,并用@WebService注解来标记它作为一个Web Service的实现。

-在该类中定义Web Service的操作,并使用@WebMethod注解来标记这些方法。

-使用工具,如JDK的wsimport命令或Eclipse的WebService工具来生成客户端代码。

【JavaEE学习80下】【调用WebService服务的四种方式】【WebService。。。

【JavaEE学习80下】【调用WebService服务的四种方式】【WebService。。。

【JavaEE学习80下】【调⽤WebService服务的四种⽅式】【WebService。

不考虑第三⽅框架,如果只使⽤JDK提供的API,那么可以使⽤三种⽅式调⽤WebService服务;另外还可以使⽤Ajax调⽤WebService 服务。

预备⼯作:开启WebService服务,使⽤jdk命令wsimport⽣成调⽤源代码package com.kdyzm.ws;import javax.jws.WebService;import javax.xml.ws.Endpoint;@WebServicepublic class MyWsServer {public String calculate(int input){System.out.println("接收到请求数据:"+input);return input*input+"";}public static void main(String[] args) {Endpoint.publish("http://localhost:9090/ws", new MyWsServer());System.out.println("server ready ......");}} ⽣成源代码命令:wsimport -s . http://localhost:9090/ws?wsdl 可能出现的问题参考: 因为出现了上述问题,所以本次测试环境使⽤jdk 1.7。

⽅法⼀:使⽤最简单、效率最⾼的⽅法调⽤WebService服务 将⽣成的java⽂件包括⽂件夹直接导⼊项⽬,并使⽤其提供的API。

1package com.kdyzm.call.method;23import com.kdyzm.ws.MyWsServer;4import com.kdyzm.ws.MyWsServerService;56/**7 * 第⼀种⽅式就是使⽤wsimport命令获取所有的需要调⽤的代码,并直接使⽤这些代码完成任务8 * @author kdyzm9 *10*/11public class Method1 {12public static void main(String[] args) {13 MyWsServerService myWsServerService=new MyWsServerService();14 MyWsServer myWsServer=myWsServerService.getMyWsServerPort();15 String result=myWsServer.calculate(2);16 System.out.println(result);17 }18 } 客户端控制台打印结果:4 服务端控制台打印结果: 这种⽅式是使⽤最多的⽅式,也是最不容易出错、效率最⾼的⽅式,推荐使⽤这种⽅式。

java调用webservice接口

java调用webservice接口

java调⽤webservice接⼝1.直接AXIS调⽤远程的webservice注意:不同版本的Axis相差很⼤,⼤家最好以apache⽹站上的例⼦为准,这⾥仅仅⽤于说明其基本⽤法。

import org.apache.axis.client.Call;import org.apache.axis.client.Service;public class WebServiceClient {public static void main(String[] args) {try {String endpoint = "http://172.19.0.153:8080/scs-web/webservice/SignService";// 直接引⽤远程的wsdl⽂件// 以下都是套路Service service = new Service();call.setOperationName("signContract");// WSDL⾥⾯描述的接⼝名称Call call = (Call) service.createCall();call.setTargetEndpointAddress(endpoint);call.addParameter("channel",org.apache.axis.encoding.XMLType.XSD_DATE,javax.xml.rpc.ParameterMode.IN);// 接⼝的参数call.addParameter("templateId",org.apache.axis.encoding.XMLType.XSD_DATE,javax.xml.rpc.ParameterMode.IN);// 接⼝的参数call.addParameter("strJson",org.apache.axis.encoding.XMLType.XSD_DATE,javax.xml.rpc.ParameterMode.IN);// 接⼝的参数call.addParameter("isSeal",org.apache.axis.encoding.XMLType.XSD_DATE,javax.xml.rpc.ParameterMode.IN);// 接⼝的参数call.addParameter("callBackUrl",org.apache.axis.encoding.XMLType.XSD_DATE,javax.xml.rpc.ParameterMode.IN);// 接⼝的参数call.setReturnType(org.apache.axis.encoding.XMLType.XSD_STRING);// 设置返回类型String templateId = "3021";String channel = "1007";String strJson = "{\"certApplys\":[{\"useridno\":\"N256613448988875\",\"address\":\"⼭东省德州临⾢县恒源\",\"engName\":\"test\",\"telno\":\"158********\",\"email\":\"test@\",\"username\":\"CHENG AI-HSIANG\",\"idTypeCode\":\"Z\" String isSeal = "1";String callBackUrl = "?";String result = (String) call.invoke(new Object[] {channel,templateId,isSeal,strJson,callBackUrl});// 给⽅法传递参数,并且调⽤⽅法System.out.println("result is :" + result);} catch (Exception e) {System.err.println(e.toString());}}}2.使⽤Http⽅式调⽤远程的webservicepackage com.webservice;import java.io.InputStream;import java.io.OutputStream;import .HttpURLConnection;import .URL;import .URLConnection;public class WebServiceClient2 {public static void main(String[] args) {try {// 1 指定WebService服务的请求地址:String wsUrl = "http://172.19.0.153:8080/scs-web/webservice/SignService";// 2 创建URL:URL url = new URL(wsUrl);// 3 建⽴连接,并将连接强转为Http连接URLConnection conn = url.openConnection();HttpURLConnection con = (HttpURLConnection) conn;// 4,设置请求⽅式和请求头:con.setDoInput(true); // 是否有⼊参con.setDoOutput(true); // 是否有出参con.setRequestMethod("POST"); // 设置请求⽅式con.setRequestProperty("content-type", "text/xml;charset=UTF-8");// 5,⼿动构造请求体String channel = "1007";String templateId = "3021";String isSeal = "1";String strJson = "{\"certApplys\":[{\"useridno\":\"N256613448988875\",\"address\":\"⼭东省德州临⾢县恒源\",\"engName\":\"test\",\"telno\":\"158********\",\"email\":\"test@\",\"username\":\"CHENG AI-HSIANG\",\"idTypeCode\":\"Z\" String callBackUrl = "?";String requestBody = "<soapenv:Envelope xmlns:soapenv=\"/soap/envelope/\"";requestBody += " xmlns:xsd=\"/2001/XMLSchema\"";requestBody += " xmlns:xsi=\"/2001/XMLSchema-instance\">";requestBody += "<soapenv:Body>";requestBody += "<q0:signContract xmlns:q0=\"/\">";requestBody += "<channel>" + channel + "</channel>";requestBody += "<templateId>" + templateId + "</templateId> ";requestBody += "<isSeal>" + isSeal + "</isSeal> ";requestBody += "<strJson>" + strJson + "</strJson> ";requestBody += "<callBackUrl>" + callBackUrl + "</callBackUrl> ";requestBody += "</q0:signContract>";requestBody += "</soapenv:Body>";requestBody += "</soapenv:Envelope>";// 6,通过流的⽅式将请求体发送出去:OutputStream out = con.getOutputStream();out.write(requestBody.getBytes());out.close();// 7,服务端返回正常:int code = con.getResponseCode();if (code == 200) {// 服务端返回正常InputStream is = con.getInputStream();byte[] b = new byte[1024];StringBuffer sb = new StringBuffer();int len = 0;while ((len = is.read(b)) != -1) {String str = new String(b, 0, len, "UTF-8");sb.append(str);}System.out.println(sb.toString());is.close();}con.disconnect();} catch (Exception e) {// TODO: handle exceptione.printStackTrace();}}}https:///java_cainiao2016/article/details/800323773.springboot 动态调⽤package com.credithc.re.sign.webservice;import com.credithc.re.sign.service.RedisService;import org.apache.cxf.endpoint.Client;import org.apache.cxf.jaxws.endpoint.dynamic.JaxWsDynamicClientFactory;import org.springframework.beans.factory.annotation.Autowired;import ponent;import javax.jws.WebMethod;import javax.jws.WebParam;import javax.jws.WebResult;import javax.jws.WebService;import space.QName;import java.util.UUID;@WebService(name = "reSignService")@Componentpublic class ReSignService {@Autowiredprivate RedisService redisService;@WebMethod@WebResultpublic String reSign(@WebParam(name = "channel") String channel,@WebParam(name = "templateId") String templateId,@WebParam(name = "isSeal") int isSeal,@WebParam(name = "strJson") String strJson,@WebParam(name = "callBackUrl") String callBackUrl) {String uuid = UUID.randomUUID().toString().replaceAll("-", "");redisService.set(uuid, callBackUrl);callBackUrl = "http://172.19.0.153:8081/re/sign/callback" + "?id=" + uuid;// 创建动态客户端JaxWsDynamicClientFactory dcf = JaxWsDynamicClientFactory.newInstance();Client client = dcf.createClient("http://172.19.0.153:8080/scs-web/webservice/SignService?wsdl"); Object[] objects = new Object[0];try {QName opName = new QName("/", "signContract");objects = client.invoke(opName, channel, templateId, isSeal, strJson, callBackUrl);System.out.println("返回数据:" + objects[0]);} catch (ng.Exception e) {e.printStackTrace();}return "请求成功";}}package com.credithc.re.sign.config;import com.credithc.re.sign.webservice.ReSignService;import org.apache.cxf.Bus;import org.apache.cxf.jaxws.EndpointImpl;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import javax.xml.ws.Endpoint;@Configurationpublic class CxfConfig {@Autowiredprivate Bus bus;@Autowiredprivate ReSignService reSignService;@Beanpublic Endpoint endpoint(){EndpointImpl endpoint = new EndpointImpl(bus,reSignService);endpoint.publish("/reSignService");return endpoint;}}。

java 调用.net webservice的方法

java 调用.net webservice的方法

java 调用.net webservice的方法在Java和.NET之间进行交互通常涉及到两种不同编程语言和平台之间的通信。

其中,.NET Web服务是一种常用的跨平台通信方式。

在Java中调用.NET Web 服务,可以通过多种方式实现,包括使用HTTP客户端库、SOAP库和Web服务适配器等。

下面将介绍一种常见的方法,以帮助您在Java中调用.NET Web服务。

一、准备工作1.确保您的Java应用程序已经安装并配置好。

2.确保您的.NET Web服务已经发布并可用。

3.安装适当的Java HTTP客户端库或SOAP库,以便在Java中调用Web服务。

二、Java调用.NET Web服务的步骤1.创建HTTP客户端对象使用Java HTTP客户端库(如Apache HttpClient或Java的HttpURLConnection)创建一个HTTP客户端对象,用于与.NET Web服务进行通信。

```javaHttpClient httpClient = HttpClientBuilder.create().build();```2.构建SOAP请求消息使用适当的SOAP库(如JAX-WS或CXF)构建SOAP请求消息,并将其发送到.NET Web服务。

确保您的SOAP请求符合Web服务的文档描述。

```javaSOAPMessage soapRequest = MessageFactory.createMessage();soapRequest.getSOAPPart().writeTo(System.out);```3.发送SOAP请求使用HTTP客户端对象将SOAP请求消息发送到.NET Web服务。

您可以使用HttpClient对象的execute()方法执行HTTP请求。

```javaHttpResponse httpResponse = httpClient.execute(webServiceUrl, context);```4.接收SOAP响应消息从Web服务的响应中获取SOAP响应消息,并解析其内容。

java发布并调用webservice接口简单示例

java发布并调用webservice接口简单示例

java发布并调⽤webservice接⼝简单⽰例如何发布⼀个webservice:1. 创建⼀个web项⽬其中主要包括webservice接⼝,实现类,发布类《接⼝》package com.yonyou.webservice;import javax.jws.WebMethod;@javax.jws.WebServicepublic interface WebService {@WebMethodString sayhello(String name);}这是WebService接⼝,其中定义了⼀个sayHello(String name)的⽅法记住⼀定要在类上加上@WebService注解@WebMethod注解声明了这个⽅法是要发布出去的⽅法《接⼝实现类》package com.yonyou.webservice;@javax.jws.WebServicepublic class WebServiceImpl implements WebService {@Overridepublic String sayhello(String name) {System.out.println("WebService begin...... "+name);return name;}}《发布类》直接执⾏main⽅法,注意需要调⽤接⼝时此main⽅法要启动package com.yonyou.webservice;import javax.xml.ws.Endpoint;public class WebServicePublish {public static void main(String[] args) {//访问地址 http://localhost:8080/WS_Server/Webservice?wsdlString address = "http://localhost:8080/WS_Server/Webservice";Endpoint.publish(address, new WebServiceImpl());System.out.println("Webservice已发布");}}浏览器访问http://localhost:8080/WS_Server/Webservice?wsdl地址显⽰如下,webservice接⼝发布成功如何调⽤发布成功的webservice:(1)可以使⽤soapUI⼯具调⽤测试(2)客户端调⽤创建⼀个客户端项⽬Win+R组合键进⼊命令⾏在cmd中输⼊wsimport -s 我们这个项⽬的src路径 -keep 我们发布的webservice地址例如:wsimport -s F:\GX\workspace\webserviceClient\src -keep http://localhost:8080/WS_Server/Webservice?wsdl编译完成会在客户端项⽬中⽣成许多类⾃⼰写的⼀个客户端的测试类WsClientpackage com.yonyou.webservice;public class WsClient {public static void main(String[] args) {WebServiceImplService factory = new WebServiceImplService();WebServiceImpl wsimpl = factory.getWebServiceImplPort();String result = wsimpl.sayhello("Webservice调⽤成功");System.out.println("测试webservice结果为: "+result);}}执⾏测试类,看是否调⽤webservice接⼝成功。

java调用webservice接口的方法

java调用webservice接口的方法

第一步:理解主题在开始撰写文章之前,我们首先需要对要写的主题进行全面的评估和理解。

我们先来简单了解一下Java调用WebService接口的方法。

Java调用WebService接口是指通过Java语言来访问并与WebService进行交互。

WebService是一种基于Web的服务架构,它通过标准的XML和HTTP协议来提供服务。

Java调用WebService 接口的方法通常包括使用Java自带的工具、使用开源的工具包,或者自行编写代码来实现。

这其中涉及到的知识点有SOAP协议、HTTP 请求、XML解析等。

第二步:深入探讨主题在深入探讨主题之前,我们可以先从WebService的基本概念开始,逐步引出Java调用WebService接口的方法。

可以简要介绍一下WebService的定义、优点、工作原理等内容,然后逐步过渡到Java 如何调用WebService接口,可以分别介绍使用Java自带的工具如JAX-WS、使用开源工具包如Apache CXF、或自行编写代码来实现。

还可以讨论如何处理WebService的返回数据、异常处理等内容。

第三步:个人观点和总结个人观点和总结部分,可以结合自己的实际经验和对主题的理解,对Java调用WebService接口的方法进行总结和回顾。

可以共享一些实际应用中的经验和技巧,也可以谈谈对未来发展的看法和期待。

通过以上步骤,我们可以撰写一篇有价值的文章来探讨Java调用WebService接口的方法,让读者能够全面、深刻地理解这个主题。

文章内容示例(非Markdown格式的普通文本):标题:Java调用WebService接口的方法1. WebService的概念和优点在当今互联网时代,Web服务被广泛应用于各种领域。

WebService 是一种基于Web的服务架构,它通过标准的XML和HTTP协议来提供服务。

它具有跨评台、跨语言、松耦合等优点,因此受到了广泛的关注和应用。

java webservice几种调用方式

java webservice几种调用方式

Java WebService几种调用方式一、介绍Java WebService是一种基于SOAP协议的远程方法调用技术,可以实现跨评台、跨语言的通信。

在实际应用中,我们可以使用多种方式来调用Web服务,本文将介绍Java WebService几种常见的调用方式。

二、基于JAX-WS的调用方式JAX-WS(Java API for XML Web Services)是一种用于创建和调用Web服务的Java标准。

通过使用JAX-WS,我们可以方便地创建客户端和服务端,并进行方法调用。

在客户端,我们可以通过使用wsimport命令生成客户端的Java代码,并使用Java代码来调用Web服务的方法。

在服务端,我们可以通过使用@WebService注解来发布服务,并使用Java代码实现方法的具体逻辑。

三、基于Axis的调用方式Apache Axis是一个流行的开源Java Web服务框架,它支持SOAP协议,可以用于创建和调用Web服务。

在基于Axis的调用方式中,我们可以使用WSDL2Java工具生成客户端的Java代码,然后使用Java代码来调用Web服务的方法。

在服务端,我们可以使用Java代码实现方法的逻辑,并使用Axis框架来发布服务。

四、基于CXF的调用方式Apache CXF是另一个流行的开源Java Web服务框架,它也支持SOAP协议,并提供了丰富的特性和扩展性。

在基于CXF的调用方式中,我们可以使用wsdl2java工具生成客户端的Java代码,然后使用Java代码来调用Web服务的方法。

在服务端,我们可以使用Java代码实现方法的逻辑,并使用CXF框架来发布服务。

五、总结在本文中,我们介绍了Java WebService几种常见的调用方式,包括基于JAX-WS、Axis和CXF。

通过这些调用方式,我们可以方便地创建和调用Web服务,实现跨评台、跨语言的通信。

个人观点和理解作为Java开发人员,我认为Java WebService是一种非常重要的技术,它可以帮助我们实现分布式系统之间的通信,为企业级应用的开发提供了很大的便利。

java-调用Webservice接口

java-调用Webservice接口

java 调用webservice的各种方法总结现在webservice加xml技术已经逐渐成熟,但要真正要用起来还需时日!!由于毕业设计缘故,我看了很多关于webservice方面的知识,今天和大家一起来研究研究webservice的各种使用方法。

一、利用jdk web服务api实现,这里使用基于SOAP message 的Web 服务1.首先建立一个Web services EndPoint:package Hello;import javax.jws.WebService;import javax.jws.WebMethod;import javax.xml.ws.Endpoint;@WebServicepublic class Hello {@WebMethodpublic String hello(String name) {return "Hello, " + name + "\n";}public static void main(String[] args) {// create and publish an endpointHello hello = new Hello();Endpoint endpoint = Endpoint.publish("http://localhost:8080/hello", hello);}}2.使用apt 编译Hello.java(例:apt -d [存放编译后的文件目录] Hello.java ) ,会生成jaws目录3.使用java Hello.Hello运行,然后将浏览器指向http://localhost:8080/hello?wsdl就会出现下列显示4.使用wsimport 生成客户端使用如下:wsimport -p . -keep http://localhost:8080/hello?wsdl这时,会在当前目录中生成如下文件:5.客户端程序:1class HelloClient{2public static void main(String args[]) {3 HelloService service = new HelloService();4 Hello helloProxy = service.getHelloPort();5 String hello = helloProxy.hello("你好");6 System.out.println(hello);7 }8}9以上方法还稍显繁琐,还有更加简单的方法二、使用xfire,我这里使用的是myeclipse集成的xfire进行测试的利用xfire开发WebService,可以有三种方法:1一种是从javabean 中生成;2 一种是从wsdl文件中生成;3 还有一种是自己建立webservice步骤如下:用myeclipse建立webservice工程,目录结构如下:首先建立webservice接口,代码如下:1package com.myeclipse.wsExample;2//Generated by MyEclipse34public interface IHelloWorldService {56 public String example(String message);78} 接着实现这个借口:1package com.myeclipse.wsExample; 2//Generated by MyEclipse34public class HelloWorldServiceImpl implements IHelloWorldService { 56 public String example(String message) {7 return message;8 }910} 修改service.xml 文件,加入以下代码:1<service>2 <name>HelloWorldService</name>3 <serviceClass>4 com.myeclipse.wsExample.IHelloWorldService5 </serviceClass>6 <implementationClass>7 com.myeclipse.wsExample.HelloWorldServiceImpl8 </implementationClass>9 <style>wrapped</style>10 <use>literal</use>11 <scope>application</scope>12 </service> 把整个项目部署到tomcat服务器中,打开浏览器,输入http://localhost:8989/HelloWorld/services/HelloWorldService?wsdl,可以看到如下:然后再展开HelloWorldService后面的wsdl可以看到:客户端实现如下:1package com.myeclipse.wsExample.client;23import .MalformedURLException;4import .URL;56import org.codehaus.xfire.XFireFactory;7import org.codehaus.xfire.client.Client;8import org.codehaus.xfire.client.XFireProxyFactory;9import org.codehaus.xfire.service.Service;10import org.codehaus.xfire.service.binding.ObjectServiceFactory;1112import com.myeclipse.wsExample.IHelloWorldService;1314public class HelloWorldClient {15public static void main(String[] args) throws MalformedURLException, Exception {16// TODO Auto-generated method stub17Service s=new ObjectServiceFactory().create(IHelloWorldService.class);18XFireProxyFactory xf=new XFireProxyFactory(XFireFactory.newInstance().getXFire());19String url="http://localhost:8989/HelloWorld/services/HelloWorldService";2021 try22 {2324 IHelloWorldService hs=(IHelloWorldService) xf.create(s,url);25 String st=hs.example("zhangjin");26 System.out.print(st);27 }28 catch(Exception e)29 {30 e.printStackTrace();31 }32 }3334}35 这里再说点题外话,有时候我们知道一个wsdl地址,比如想用java客户端引用.net 做得webservice,使用myeclipse引用,但是却出现无法通过验证的错误,这时我们可以直接在类中引用,步骤如下:1public static void main(String[] args) throws MalformedURLException, Exception {2 // TODO Auto-generated method stub3 Service s=new ObjectServiceFactory().create(IHelloWorldService.class);4 XFireProxyFactory xf=new XFireProxyFactory(XFireFactory.newInstance().getXFire()); 567//远程调用.net开发的webservice8Client c=new Client(new URL("/webservices/qqOnlineWebService.asmx?wsdl"));9 Object[] o=c.invoke("qqCheckOnline", new String[]{"531086641","591284436"});1011//调用.net本机开发的webservice12Client c1=new Client(new URL("http://localhost/zj/Service.asmx?wsdl"));13Object[] o1=c1.invoke("HelloWorld",new String[]{});1415}三、使用axis1.4调用webservice方法前提条件:下载axis1.4包和tomcat服务器,并将axis文件夹复制到tomcat服务器的webapp文件夹中这里我就说一下最简单的方法:首先建立一个任意的java类(例如:HelloWorld.java),复制到axis文件夹下,将其扩展名改为jws,然后重新启动tomcat,在浏览器中输入http://localhost:8989/axis/HelloWorld.jws?wsdl,就会得到一个wsdl文件,其客户端调用方法如下:1import javax.xml.rpc.Service;2import javax.xml.rpc.ServiceException;3import javax.xml.rpc.ServiceFactory;45import .MalformedURLException;6import .URL;7import java.rmi.RemoteException;89import space.QName;1011public class TestHelloWorld {121314 public static void main(String[] args) throws MalformedURLException, ServiceException, RemoteException {15 // TODO Auto-generated method stub1617 String wsdlUrl ="http://localhost:8989/axis/HelloWorld.jws?wsdl";18 String nameSpaceUri ="http://localhost:8989/axis/HelloWorld.jws";19 String serviceName = "HelloWorldService";20 String portName = "HelloWorld";2122 ServiceFactory serviceFactory = ServiceFactory.newInstance();23 Service afService =serviceFactory.createService(new URL(wsdlUrl),new QName(nameSpaceUri, serviceName));24 HelloWorldInterface proxy = (HelloWorldInterface)afService.getPort(new QName(nameSpaceUri, portName),HelloWorldInterface.class);25 System.out.println("return value is "+proxy.getName("john") ) ;2627 }2829}30四、使用axis2开发webservice(这里首先感谢李宁老师)使用axis2 需要先下载axis2-1.4.1-bin.zipaxis2-1.4.1-war.zip/axis2/同理,也需要将axis2复制到webapp目录中在axis2中部署webservice有两种方法,第一种是pojo方式,这种方式比较简单,但是有一些限制,例如部署的类不能加上包名第二种方式是利用xml发布webservice,这种方法比较灵活,不需要限制类的声明下面分别说明使用方法:1.pojo方式:在Axis2中不需要进行任何的配置,就可以直接将一个简单的POJO发布成WebService。

java webservice接口调用案例

java webservice接口调用案例

角色:文章写手文章主题:Java WebService接口调用案例尊敬的客户,在您指定的主题下,我将为您撰写一篇关于Java WebService接口调用案例的文章。

文章将从基础知识入手,逐步深入,以确保您能全面理解和灵活应用这一主题。

一、Java WebService基础知识1.1 什么是Web ServiceWeb Service是一种基于XML标准来进行网络服务的应用程序接口(API)。

它允许不同的应用程序在网络上互相通信,实现远程程序调用(RPC)。

1.2 Java中的Web Service在Java中,可以使用JAX-WS(Java API for XML Web Services)来创建和调用Web Service。

通过JAX-WS,可以方便地构建和部署基于XML的Web服务,实现跨评台、跨语言的通信。

二、Java WebService接口调用实例2.1 创建Web Service客户端在Java项目中引入WebService客户端的依赖包,并生成客户端代码。

可以创建一个Java类作为WebService的客户端,调用WebService 提供的接口方法。

2.2 实现WebService接口调用在客户端类中,可以实例化WebService的服务类,并通过该实例调用WebService提供的方法。

可以通过传递参数来调用WebService接口,获取返回结果,并进行相应的处理和展示。

2.3 错误处理和异常处理在进行WebService接口调用时,需要注意错误处理和异常处理。

可以通过try-catch-finally语句来捕获异常,并进行适当的处理,以确保程序的稳定性和健壮性。

三、个人观点和总结在我看来,Java WebService接口调用是一项非常重要和有价值的技能。

它可以帮助我们实现不同系统之间的通信和数据交换,实现业务逻辑的解耦和扩展。

通过学习和掌握Java WebService接口调用,我们可以更好地应用和拓展在实际项目开发中,提高系统的可维护性和扩展性。

soap调用webservice接口 java 代码

soap调用webservice接口 java 代码

soap调用webservice接口 java 代码SOAP(Simple Object Access Protocol)是一种基于XML的协议,在Web服务中用于在不同的应用程序之间进行通信。

在Java中,可以使用Java的标准库和一些开源工具来调用SOAP Web服务接口。

下面是一个使用Java代码调用SOAP Web服务接口的参考内容:1. 导入所需的库和类:```javaimport javax.xml.soap.*;import java.io.ByteArrayOutputStream;import java.io.InputStream;import .HttpURLConnection;import .URL;```2. 创建SOAP消息,并设置消息的内容:```java// 创建SOAP消息工厂MessageFactory messageFactory = MessageFactory.newInstance(); SOAPMessage soapMessage = messageFactory.createMessage(); // 创建SOAP消息的部分SOAPPart soapPart = soapMessage.getSOAPPart();// 创建SOAP消息的EnvelopeSOAPEnvelope envelope = soapPart.getEnvelope();// 创建SOAP消息的BodySOAPBody body = envelope.getBody();// 在Body中添加要调用的方法和参数QualifiedName qualifiedName = new QName("<命名空间>", "<方法名>");SOAPBodyElement bodyElement =body.addBodyElement(qualifiedName);// 如果需要添加参数值,可以使用以下方式://bodyElement.addChildElement("参数名").addTextNode("参数值");```3. 创建SOAP连接,并发送SOAP消息:```java// 创建SOAP连接SOAPConnectionFactory connectionFactory = SOAPConnectionFactory.newInstance();SOAPConnection connection =connectionFactory.createConnection();// 设置目标SOAP Web服务的URLURL url = new URL("<Web服务的URL>");// 发送SOAP消息,并接收响应SOAPMessage response = connection.call(soapMessage, url);```4. 解析SOAP响应,并获取返回的数据:```java// 获取SOAP响应的Body部分SOAPBody responseBody = response.getSOAPBody();// 获取返回结果的值// 可以根据需要来解析和处理返回的数据NodeList nodeList = responseBody.getElementsByTagName("<元素名>");String result = nodeList.item(0).getTextContent();```5. 关闭SOAP连接:```javaconnection.close();```以上是一个基本的SOAP调用的参考代码,实际使用时,需要根据具体的SOAP接口定义和要调用的方法及参数进行调整。

Java调用WebService接口

Java调用WebService接口

Java调⽤WebService接⼝在实际开发⼯作中,会遇到接⼝对接的场景,有直接HTTP调⽤⽅式,参数体为JSON串;还有⼀种是SOAP⽅式,即webService接⼝。

⾸先,可以在浏览器上安装⼀个插件(Wizdler),如下图。

通过这个插件,我们可以轻松的看到所有的⽅法点击⽅法,可以直接⽣成对应的请求参数,替换相关参数,可以直接调⽤⽅法;下⾯来讲⼀下如何使⽤Java代码实现接⼝的调⽤;@Testpublic void test(){try{String webServiceUrl = "http://238.62.169.140:8090/g6_venues/webservice/gtv-external-venues-service?wsdl";JaxWsDynamicClientFactory factory1 = JaxWsDynamicClientFactory.newInstance();Client client = factory1.createClient(webServiceUrl);HTTPConduit conduit = (HTTPConduit)client.getConduit();HTTPClientPolicy clientPolicy = new HTTPClientPolicy();//连接超时clientPolicy.setConnectionTimeout(2000);//取消块编码clientPolicy.setAllowChunking(false);//响应超时clientPolicy.setReceiveTimeout(12000);conduit.setClient(clientPolicy);String startDateTime = "20201018090000";String endDateTime = "20201228160000";Object[] result = client.invoke("queryFreeRoomInfo",startDateTime ,endDateTime ); //queryFreeRoomInfo为⽅法名;System.out.println("返回结果:" + result[0].toString());}catch (Exception e){e.printStackTrace();}}JaxWsDynamicClientFactory、HTTPConduit、Client、HTTPClientPolicy需要引⼊对应的依赖,。

visual studio code java调用webservice方法(一)

visual studio code java调用webservice方法(一)

Visual Studio Code 是一个轻量级但功能强大的集成开发环境,它支持多种编程语言,包括 Java。

在使用 Visual Studio Code 进行 Java 开发时,经常需要调用 WebService 方法来实现与其他系统的数据交互。

本文将详细介绍在Visual Studio Code 中如何调用 WebService 方法的各种方法。

使用 Axis2 插件Axis2 是一个流行的 WebService 框架,它提供了丰富的工具来生成WebService 客户端代码。

在 Visual Studio Code 中,可以通过安装 Axis2 插件来使用其功能。

首先,在 Visual Studio Code 中搜索并安装 Axis2 插件,然后按照插件的指引配置 WebService 的 WSDL 地址和生成客户端代码。

最后,根据生成的客户端代码,调用 WebService 方法并处理返回结果。

使用 Apache CXF 插件Apache CXF 是另一个优秀的 WebService 框架,它也提供了丰富的工具来生成 WebService 客户端代码。

在 Visual Studio Code 中,可以通过安装Apache CXF 插件来使用其功能。

首先,在 Visual Studio Code 中搜索并安装Apache CXF 插件,然后按照插件的指引配置 WebService 的 WSDL 地址和生成客户端代码。

最后,根据生成的客户端代码,调用 WebService 方法并处理返回结果。

使用 JAX-WS 注解JAX-WS 是 Java API for XML Web Services 的缩写,它提供了一种基于注解的方式来定义和调用 WebService。

在 Visual Studio Code 中,可以直接使用JAX-WS 注解来定义 WebService 客户端。

首先,通过在 Java 类中使用@WebServiceClient 注解来定义 WebService 客户端,然后使用 @WebMethod 注解来定义调用的 WebService 方法。

java调用wsdl的webservice接口两种调用方式

java调用wsdl的webservice接口两种调用方式

java调⽤wsdl的webservice接⼝两种调⽤⽅式关于wsdl接⼝对于我来说是⽐较头疼的基本没搞过。

⼀脸懵就在⽹上搜看着写的都很好到我这就不好使了,⾮常蓝瘦、谨以此随笔纪念我这半个⽉踩过的坑、、、 背景:短短两周除了普通开发外我就接到了两个webservice接⼝,很少搞这样的接⼝就很懵; 开发⼯具:eclipse、idea ⽅法⼀: 第⼀种就是个⼈觉得很容易懂得⽅法,作为wsdl接⼝,我们可以⽤开发⼯具将wsdl接⼝转为本地⽂件,这样就可以看他们的调⽤⽅法以及参数了。

·以eclipse为例,在你的项⽬⾥右键选择other·然后搜索web,选择web service client·之后将你的wsdl路径输⼊,点击finish 就可以看到了·这个时候写个main⽅法像调本地⽅法⼀样去调⽤就好了·idea的这⾥将⽣成路径说⼀下:·⼀般wsdl调⽤⽐较正规的话具体调⽤就会写在XXXservicePort.java⾥然后写个调⽤⽅法去调⽤就好了·另外附上我的测试: ps:因为我这边开发有代理需要加上代理就加上代理访问的(这也是个坑啊!!!)//给java进程强制加代理System.getProperties().put("proxySet", "true");System.getProperties().put("proxyHost", "172.30.XX.XXX");System.getProperties().put("proxyPort", "9999");System.out.println("Hello World!");TaskService service = new TaskService();TaskServicePort port = service.getTaskServicePort();B2BParameter para1 = new B2BParameter();B2BParameter para2 = new B2BParameter();B2BParameter para3 = new B2BParameter();B2BParameter para4 = new B2BParameter();B2BParameter para5 = new B2BParameter();B2BParameter para6 = new B2BParameter();para1.setName("loginId");para1.setValue("AWP_B2B_CN");para2.setName("password");para2.setValue("audatex");para3.setName("maxCount");para3.setValue("100");para4.setName("startAtIndex");para4.setValue("1");para5.setName("fieldsToReturn");para5.setValue("ResponsibleUserLoginId,CreatorLoginId,CreationDate,CaseId,TaskId,ClaimNumber,ManufacturerName,ModelName,PlateNumber,VIN,BusinessStatusKind");para6.setName("returnPayloadAsXML");para6.setXsltParameter(true);B2BRequest request = new B2BRequest();request.getParameter().add(para1);request.getParameter().add(para2);request.getParameter().add(para3);request.getParameter().add(para4);request.getParameter().add(para5);request.getParameter().add(para6);request.setPayload("CreationDate >\"2019-07-01T11:00:00\" and CreationDate < \"2019-08-08T12:00:00\" ");B2BResponse response = port.findTasks(request);System.out.println(response.getHostName());System.out.println(response.getLoginId());System.out.println(response.getPayload());System.out.println(response.getReturnCode());⽅法⼆: 另外就是⽤httpClient的⽅式去调⽤。

java请求webservice 案例

java请求webservice 案例

我们需要理解什么是Java请求WebService,以及它在实际应用中的案例和使用场景。

在深入讨论之前,让我们先来回顾一下WebService的基本概念和Java在Web服务中的作用。

一、WebService基本概念WebService是一种通过网络对外提供特定功能的应用程序接口(API),可通过HTTP协议进行访问。

它通常使用XML语言进行数据交互,可以在不同的操作系统和编程语言之间进行通信。

WebService可以被多个不同的客户端访问,实现了跨评台、跨语言的特性。

二、Java在Web服务中的作用Java作为一种广泛应用的编程语言,在Web服务中有着重要的作用。

Java提供了丰富的API和工具,可以方便地创建和使用WebService。

通过Java的相关技术,我们可以轻松实现与WebService的交互和调用,从而实现各种功能和业务需求。

三、Java请求WebService的案例和使用场景下面我们将结合实际案例,介绍Java请求WebService的使用场景和相关技术:1. 场景一:调用天气预报WebService假设我们需要开发一个天气预报功能,可以通过调用第三方的天气预报WebService来实现。

我们可以使用Java编写客户端程序,通过HTTP协议向天气预报WebService发送请求,并获取返回的天气数据,然后在前端页面上展示给用户。

这种场景下,Java请求WebService是非常常见且实用的。

在这个案例中,我们可以使用Java的相关类库和工具,比如HttpURLConnection类、HttpClient库等,来发送HTTP请求和处理响应数据。

通过这些工具,我们可以方便地与天气预报WebService进行交互,并将获取到的天气信息用于自己的应用程序中。

2. 场景二:集成支付接口WebService另外一个典型的案例是集成第三方支付接口的WebService。

比如我们想在自己的电商评台上实现在线支付功能,就可以通过调用支付接口的WebService来实现。

Java调用CXFWebService接口的两种方式实例

Java调用CXFWebService接口的两种方式实例

Java调⽤CXFWebService接⼝的两种⽅式实例1.静态调⽤// 创建WebService客户端代理⼯⼚JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();// 判断是否抛出异常factory.getOutInterceptors().add(new LoggingInInterceptor());// 注册webservice接⼝factory.setServiceClass(DeductionService.class);// 配置webservice地址factory.setAddress("http://localhost:7002/card/services/HelloWorld?wsdl");// 获得接⼝对象CxfService service = (CxfService) factory.create();// 调⽤接⼝⽅法String result = service.sayHello("aaaaaaaaaa");System.out.println("调⽤结果:" + result);// 关闭接⼝连接System.exit(0);2.动态调⽤:JaxWsDynamicClientFactory dcf = JaxWsDynamicClientFactory.newInstance();org.apache.cxf.endpoint.Client client = dcf.createClient("http://localhost:7002/card/services/HelloWorld?wsdl");// url为调⽤webService的wsdl地址QName name = new QName("/", "sayHello");// namespace是命名空间,methodName是⽅法名String xmlStr = "aaaaaaaa";// paramvalue为参数值Object[] objects;try {objects = client.invoke(name, xmlStr);System.out.println(objects[0].toString());} catch (Exception e) {e.printStackTrace();}区别:静态调⽤需要依赖service类,因为客户端调⽤cxf webservice接⼝的过程中需要服务器端提供service,很不⽅便,如果同⼀个项⽬中则没有区别。

java调用webservice的.asmx接口的使用步骤

java调用webservice的.asmx接口的使用步骤

java调⽤webservice的.asmx接⼝的使⽤步骤⽬录前⾔⼀、接⼝类型⼆、使⽤步骤1.访问⽅式2.导⼊的maven前⾔接触到⼀个.asmx结尾的webservice接⼝,为了增加记忆决定记录下来。

⼀、接⼝类型已.asmx结尾的接⼝例:接⼝地址:http://IP地址/xxx/service/xxx/xxxx.asmx⽅法名:test参数类型:string⼆、使⽤步骤1.访问⽅式代码如下(⽰例):controller类:String s = clientUtil.test("http://IP地址/xxx/service/xxx/xxxx.asmx", "test","test");调⽤类:public static String test(String Url, String methodName, String str) throws Exception {String ref = null;// webService链接地址String url = Url;//获取域名地址,server定义的String soapaction = "/";Service service = new Service();try {Call call = (Call) service.createCall();call.setTargetEndpointAddress(url);// 设置要调⽤哪个⽅法call.setOperationName(new QName(soapaction, methodName));// 设置要传递的参数名call.addParameter(new QName(soapaction,"str"),org.apache.axis.encoding.XMLType.XSD_STRING,javax.xml.rpc.ParameterMode.IN);// 提供标准类型有addParameter就必须有setReturnTypecall.setReturnType(org.apache.axis.encoding.XMLType.XSD_STRING);call.setUseSOAPAction(true);call.setSOAPActionURI(soapaction + methodName);// 调⽤⽅法并传递参数ref = (String) call.invoke(new Object[]{str});return ref;} catch (Exception e) {e.printStackTrace();}return ref;}2.导⼊的maven如下:<dependency><groupId>javax.activation</groupId><artifactId>activation</artifactId><version>1.1.1</version></dependency><dependency><groupId>org.apache.axis</groupId><artifactId>axis</artifactId><version>1.4</version></dependency><dependency><groupId>axis</groupId><artifactId>axis-jaxrpc</artifactId><version>1.4</version></dependency>到此这篇关于java调⽤webservice的.asmx接⼝的⽂章就介绍到这了,更多相关java调⽤webservice接⼝内容请搜索以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家以后多多⽀持!。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

java 调用webservice的各种方法总结现在webservice加xml技术已经逐渐成熟,但要真正要用起来还需时日!!由于毕业设计缘故,我看了很多关于webservice方面的知识,今天和大家一起来研究研究webservice的各种使用方法。

一、利用jdk web服务api实现,这里使用基于SOAP message 的Web 服务1.首先建立一个Web services EndPoint:package Hello;import javax.jws.WebService;import javax.jws.WebMethod;import javax.xml.ws.Endpoint;@WebServicepublic class Hello {@WebMethodpublic String hello(String name) {return "Hello, " + name + "\n";}public static void main(String[] args) {// create and publish an endpointHello hello = new Hello();Endpoint endpoint = Endpoint.publish("http://localhost:8080/hello", hello);}}2.使用apt 编译Hello.java(例:apt -d [存放编译后的文件目录] Hello.java ) ,会生成jaws目录3.使用java Hello.Hello运行,然后将浏览器指向http://localhost:8080/hello?wsdl就会出现下列显示4.使用wsimport 生成客户端使用如下:wsimport -p . -keep http://localhost:8080/hello?wsdl这时,会在当前目录中生成如下文件:5.客户端程序:1class HelloClient{2public static void main(String args[]) {3 HelloService service = new HelloService();4 Hello helloProxy = service.getHelloPort();5 String hello = helloProxy.hello("你好");6 System.out.println(hello);7 }8}9以上方法还稍显繁琐,还有更加简单的方法二、使用xfire,我这里使用的是myeclipse集成的xfire进行测试的利用xfire开发WebService,可以有三种方法:1一种是从javabean 中生成;2 一种是从wsdl文件中生成;3 还有一种是自己建立webservice步骤如下:用myeclipse建立webservice工程,目录结构如下:首先建立webservice接口,代码如下:1package com.myeclipse.wsExample;2//Generated by MyEclipse34public interface IHelloWorldService {56 public String example(String message);78} 接着实现这个借口:1package com.myeclipse.wsExample; 2//Generated by MyEclipse34public class HelloWorldServiceImpl implements IHelloWorldService { 56 public String example(String message) {7 return message;8 }910} 修改service.xml 文件,加入以下代码:1<service>2 <name>HelloWorldService</name>3 <serviceClass>4 com.myeclipse.wsExample.IHelloWorldService5 </serviceClass>6 <implementationClass>7 com.myeclipse.wsExample.HelloWorldServiceImpl8 </implementationClass>9 <style>wrapped</style>10 <use>literal</use>11 <scope>application</scope>12 </service> 把整个项目部署到tomcat服务器中,打开浏览器,输入http://localhost:8989/HelloWorld/services/HelloWorldService?wsdl,可以看到如下:然后再展开HelloWorldService后面的wsdl可以看到:客户端实现如下:1package com.myeclipse.wsExample.client;23import .MalformedURLException;4import .URL;56import org.codehaus.xfire.XFireFactory;7import org.codehaus.xfire.client.Client;8import org.codehaus.xfire.client.XFireProxyFactory;9import org.codehaus.xfire.service.Service;10import org.codehaus.xfire.service.binding.ObjectServiceFactory;1112import com.myeclipse.wsExample.IHelloWorldService;1314public class HelloWorldClient {15public static void main(String[] args) throws MalformedURLException, Exception {16// TODO Auto-generated method stub17Service s=new ObjectServiceFactory().create(IHelloWorldService.class);18XFireProxyFactory xf=new XFireProxyFactory(XFireFactory.newInstance().getXFire());19String url="http://localhost:8989/HelloWorld/services/HelloWorldService";2021 try22 {2324 IHelloWorldService hs=(IHelloWorldService) xf.create(s,url);25 String st=hs.example("zhangjin");26 System.out.print(st);27 }28 catch(Exception e)29 {30 e.printStackTrace();31 }32 }3334}35 这里再说点题外话,有时候我们知道一个wsdl地址,比如想用java客户端引用.net 做得webservice,使用myeclipse引用,但是却出现无法通过验证的错误,这时我们可以直接在类中引用,步骤如下:1public static void main(String[] args) throws MalformedURLException, Exception {2 // TODO Auto-generated method stub3 Service s=new ObjectServiceFactory().create(IHelloWorldService.class);4 XFireProxyFactory xf=new XFireProxyFactory(XFireFactory.newInstance().getXFire()); 567//远程调用.net开发的webservice8Client c=new Client(new URL("/webservices/qqOnlineWebService.asmx?wsdl"));9 Object[] o=c.invoke("qqCheckOnline", new String[]{"531086641","591284436"});1011//调用.net本机开发的webservice12Client c1=new Client(new URL("http://localhost/zj/Service.asmx?wsdl"));13Object[] o1=c1.invoke("HelloWorld",new String[]{});1415}三、使用axis1.4调用webservice方法前提条件:下载axis1.4包和tomcat服务器,并将axis文件夹复制到tomcat服务器的webapp文件夹中这里我就说一下最简单的方法:首先建立一个任意的java类(例如:HelloWorld.java),复制到axis文件夹下,将其扩展名改为jws,然后重新启动tomcat,在浏览器中输入http://localhost:8989/axis/HelloWorld.jws?wsdl,就会得到一个wsdl文件,其客户端调用方法如下:1import javax.xml.rpc.Service;2import javax.xml.rpc.ServiceException;3import javax.xml.rpc.ServiceFactory;45import .MalformedURLException;6import .URL;7import java.rmi.RemoteException;89import space.QName;1011public class TestHelloWorld {121314 public static void main(String[] args) throws MalformedURLException, ServiceException, RemoteException {15 // TODO Auto-generated method stub1617 String wsdlUrl ="http://localhost:8989/axis/HelloWorld.jws?wsdl";18 String nameSpaceUri ="http://localhost:8989/axis/HelloWorld.jws";19 String serviceName = "HelloWorldService";20 String portName = "HelloWorld";2122 ServiceFactory serviceFactory = ServiceFactory.newInstance();23 Service afService =serviceFactory.createService(new URL(wsdlUrl),new QName(nameSpaceUri, serviceName));24 HelloWorldInterface proxy = (HelloWorldInterface)afService.getPort(new QName(nameSpaceUri, portName),HelloWorldInterface.class);25 System.out.println("return value is "+proxy.getName("john") ) ;2627 }2829}30四、使用axis2开发webservice(这里首先感谢李宁老师)使用axis2 需要先下载axis2-1.4.1-bin.zipaxis2-1.4.1-war.zip/axis2/同理,也需要将axis2复制到webapp目录中在axis2中部署webservice有两种方法,第一种是pojo方式,这种方式比较简单,但是有一些限制,例如部署的类不能加上包名第二种方式是利用xml发布webservice,这种方法比较灵活,不需要限制类的声明下面分别说明使用方法:1.pojo方式:在Axis2中不需要进行任何的配置,就可以直接将一个简单的POJO发布成WebService。

相关文档
最新文档