`

java调用webservice接口 几种方法

 
阅读更多

webservice的 发布一般都是使用WSDL(web service descriptive language)文件的样式来发布的,在WSDL文件里面,包含这个webservice暴露在外面可供使用的接口。今天搜索到了非常好的 webservice provider列表

http://www.webservicex.net/WCF/default.aspx

这上面列出了70多个包括很多方面的free webservice provider,utilities->global weather就可以获取全球的天气预报。

下面我们来看Java如何通过WSDL文件来调用这些web service:

注意,以下的代码并没有经过真正的测试,只是说明这些情况,不同版本的Axis相差很大,大家最好以apache网站上的例子为准,这里仅仅用于说明其基本用法。

1,直接AXIS调用远程的web service

我觉得这种方法比较适合那些高手,他们能直接看懂XML格式的WSDL文件,我自己是看不懂的,尤其我不是专门搞这行的,即使一段时间看懂,后来也就忘记了。直接调用模式如下:

import java.util.Date;

import java.text.DateFormat;

import org.apache.axis.client.Call;

import org.apache.axis.client.Service;

import javax.xml.namespace.QName;

import java.lang.Integer;

import javax.xml.rpc.ParameterMode;

 

public class caClient {

public static void main(String[] args) {

 

try {

String endpoint = "http://localhost:8080/ca3/services/caSynrochnized?wsdl";

//直接引用远程的wsdl文件

//以下都是套路
Service service = new Service();

Call call = (Call) service.createCall();

call.setTargetEndpointAddress(endpoint);

call.setOperationName("addUser");//WSDL里面描述的接口名称

call.addParameter("userName", org.apache.axis.encoding.XMLType.XSD_DATE,

javax.xml.rpc.ParameterMode.IN);//接口的参数

call.setReturnType(org.apache.axis.encoding.XMLType.XSD_STRING);//设置返回类型

String temp = "测试人员";

String result = (String)call.invoke(new Object[]{temp});

//给方法传递参数,并且调用方法

System.out.println("result is "+result);

}

catch (Exception e) {

System.err.println(e.toString());

}

}

}

2,直接SOAP调用远程的webservice

这种模式我从来没有见过,也没有试过,但是网络上有人贴出来,我也转过来

import org.apache.soap.util.xml.*;

import org.apache.soap.*;

import org.apache.soap.rpc.*;

 

import java.io.*;

import java.net.*;

import java.util.Vector;

 

public class caService{

public static String getService(String user) {

URL url = null;

try {

url=new URL("http://192.168.0.100:8080/ca3/services/caSynrochnized");

} catch (MalformedURLException mue) {

return mue.getMessage();

}

// This is the main SOAP object

Call soapCall = new Call();

// Use SOAP encoding

soapCall.setEncodingStyleURI(Constants.NS_URI_SOAP_ENC);

// This is the remote object we're asking for the price

soapCall.setTargetObjectURI("urn:xmethods-caSynrochnized");

// This is the name of the method on the above object

soapCall.setMethodName("getUser");

// We need to send the ISBN number as an input parameter to the method

Vector soapParams = new Vector();

 

// name, type, value, encoding style

Parameter isbnParam = new Parameter("userName", String.class, user, null);

soapParams.addElement(isbnParam);

soapCall.setParams(soapParams);

try {

// Invoke the remote method on the object

Response soapResponse = soapCall.invoke(url,"");

// Check to see if there is an error, return "N/A"

if (soapResponse.generatedFault()) {

Fault fault = soapResponse.getFault();

String f = fault.getFaultString();

return f;

} else {

// read result

Parameter soapResult = soapResponse.getReturnValue ();

// get a string from the result

return soapResult.getValue().toString();

}

} catch (SOAPException se) {

return se.getMessage();

}

}

}

3,使用wsdl2java把WSDL文件转成本地类,然后像本地类一样使用,即可。

这是像我这种懒人最喜欢的方式,仍然以前面的global weather report为例。

首先 java org.apache.axis.wsdl.WSDL2Java http://www.webservicex.net/globalweather.asmx.WSDL

原本的网址是http://www.webservicex.net/globalweather.asmx?WSDL,中间个各问号,但是Linux下面它不能解析,所以去掉问号,改为点号。

那么就会出现4个文件:

GlobalWeather.java GlobalWeatherLocator.java GlobalWeatherSoap.java GlobalWeatherSoapStub.java
其中GlobalWeatherSoap.java是我们最为关心的接口文件,如果你对RMI等SOAP实现的具体细节不感兴趣,那么你只需要看接口文件即可,在使用的时候,引入这个接口即可,就好像使用本地类一样。

分享到:

相关推荐

    java 调用webservice的几种方法总结

    "Java 调用 Webservice 的几种方法总结" Java 调用 Webservice 的几种方法总结中,主要介绍了使用 JDK Web 服务 API、Axis 和 XFire 等方法来调用 Webservice。下面将对每种方法进行详细的介绍。 使用 JDK Web ...

    Java调用WebService接口的方法

    本文将深入探讨如何使用Java调用WebService接口,以实例分析有参方法Add的使用技巧。 首先,我们需要了解WebService的基础知识。WebService是一种基于开放标准(如SOAP、WSDL和UDDI)的Web应用程序,它能够通过HTTP...

    java调用json参数的webservice

    在探讨Java调用带有JSON参数的WebService之前,我们首先需要了解几个关键的技术概念:Java、JSON以及WebService。 Java是一种广泛使用的编程语言,它具有面向对象、跨平台、多线程以及健壮性等特点。Java在企业级...

    java调用webservice几种方式

    自定义xml调用webservice

    java调用webservice接口方法借鉴.pdf

    Java调用WebService接口的方法主要涉及两个关键点:一是理解WebService的工作原理,二是使用相应的Java库进行调用。本文将详细讲解这两个方面。 首先,WebService是一种基于标准的、平台和语言无关的通信方式,它...

    Java使用XFire调用WebService接口

    这篇博客“Java使用XFire调用WebService接口”显然是讨论如何利用XFire这个开源框架来与Web服务交互。 XFire是Apache CXF项目的前身,它提供了一种简单的方式来创建和消费SOAP Web服务。XFire的强项在于其轻量级和...

    WebService调用的几种方式

    本文将深入探讨在Java环境中调用WebService的五种主要方式:Axis、CXF、HttpClient、MyEclipse反向生成以及XFire。 1. Axis:Apache Axis是最早且广泛使用的SOAP库,用于创建和消费Web服务。使用Axis调用WebService...

    Java调用WebService接口jar包

    总之,Java调用WebService接口涉及多个库和jar包,通过理解相关概念和技术,可以有效地实现跨系统的数据交换。在实际开发中,根据项目需求选择合适的工具和库,合理优化,确保服务调用的稳定性和效率。

    java_调用Webservice接口

    本文将对Java调用Webservice接口的几种常见方法进行详细介绍。 #### 二、使用JDK Web Service API实现 ##### 1. 创建Webservice服务端点 在Java中,可以通过JDK自带的WebService API来创建和发布WebService服务...

    PB调用JAVA WEBSERVICE实例

    标题中的“PB调用JAVA WEBSERVICE实例”指的是使用PowerBuilder(PB)应用程序调用由Java编写的Web服务。在企业级应用开发中,不同语言之间的互操作性是非常重要的,而Web服务提供了一种标准的方式来实现这一点。让...

    几种调用WebService的方法

    ### 几种调用WebService的方法 #### WebService简介与调用方法概述 WebService是一种通过标准的Web协议(如HTTP)来提供服务的应用程序接口(API),它允许在不同平台、不同语言开发的应用程序之间进行通信。...

    java axis 调用webservice服务端

    Java Axis调用WebService服务端是Java开发者在进行分布式系统交互时常见的一种技术实践。Axis是Apache软件基金会开发的一个开源项目,它提供了一种方便、高效的方式,使得Java应用程序能够作为客户端来消费或作为...

    C++调用webservice接口.docx

    ### C++调用WebService接口详解 #### 一、前言 在现代软件开发中,不同系统之间的通信变得越来越重要。WebService作为一种实现应用间交互的重要手段,被广泛应用于各种场景之中。而对于C++开发者来说,虽然C++本身...

    java调用webservice几种方式代码

    在`ClientTest.java`文件中,可能会包含一个或多个上述方法的实现,用于测试Java调用Web服务的功能。通过分析和运行这个测试代码,我们可以更好地理解这些调用方式的具体应用和差异。在实际开发中,选择哪种方式取决...

    WSDl生成WebService接口及调用

    在本主题中,我们将深入探讨如何使用WSDL生成WebService接口以及编写Test调用方法进行测试。 1. WSDL基础 WSDL文件是一个XML文档,它描述了服务的位置(endpoint)、使用的消息格式(message)和服务提供的操作...

    Python调用WebService接口实例说明

    ### Python调用WebService接口实例说明 #### 背景与目的 在当今信息化时代,不同系统之间的通信变得越来越重要。为了实现系统间的高效交互,多种技术手段被开发出来,其中WebService作为一种常用的服务端口,提供了...

    Java调用webService应用.pdf

    Java环境下调用WebService方式的主要优点包括以下几点: 1. 跨防火墙通信:由于系统用户众多,分布于不同地域,客户端和服务器端之间通常会有防火墙或者代理服务器,这就使得通信变得棘手。通过使用WebService,...

    JAVA调用WebService的方法.docx

    本文将详细介绍几种常见的Java调用WebService的技术方案及其实现细节。 #### 二、基础知识 在深入探讨具体的调用方法之前,我们首先需要了解一些关于WebService的基础概念。 - **SOAP(Simple Object Access ...

    Java webservice cxf客户端调用demo和服务端

    Java WebService CXF客户端调用和服务端的实现是企业级应用程序中常见的通信方式,它基于标准的SOAP(Simple Object Access Protocol)协议,提供了一种在分布式环境中交换信息的方法。CXF是一个开源框架,它简化了...

    js调用webservice示例+源码

    本文将深入探讨如何使用JavaScript调用Web Service,以及如何解决在这个过程中遇到的问题,以配合“js调用webservice示例+源码”的主题。 Web Service是一种基于网络的、平台无关的服务,它通过SOAP(Simple Object...

Global site tag (gtag.js) - Google Analytics