- 浏览: 54097 次
- 性别:
- 来自: 湖北
文章分类
- 全部博客 (102)
- ibatis (4)
- spring (12)
- 数据库 (3)
- java (26)
- css (2)
- linux (1)
- hibernate (4)
- Maven (3)
- CMS (1)
- spring mvc (1)
- MyBati (1)
- WEB (1)
- 分布式 (2)
- webservice (2)
- 网络协议 (1)
- TCP (1)
- UDP协议 (1)
- sql优化原则 (1)
- android (1)
- hadoop (10)
- solr (2)
- Scala学习笔记--Actor和并发 (0)
- Spark (4)
- Scala (1)
- hbase (1)
- kafka (1)
- ICE (2)
- 机器学习算法 (2)
- Apache Ignite (1)
- python (1)
- tensorflow (2)
- openstack (1)
- 系统监控 (2)
- 大数据 (1)
- ogg (2)
- Oracle GoldenGate DDL 详细说明 使用手册(较早资料) (0)
- oracle (1)
最新评论
1. Java调用webservice接口方法
webservice的 发布一般都是使用WSDL(web service descriptive language)文件的样式来发布的,在WSDL文件里面,包含这个webservice暴露在外面可供使用的接口。
我们也可以在以下网站找到许多 webservice provider列表, 你可以使用下面的URL来测试你的webservice程序。
http://www.webservicex.net/ws/default.aspx
这上面列出了70多个包括很多方面的free webservice provider,utilities->global weather就可以获取全球的天气预报。
下面我们来看Java如何通过WSDL文件来调用这些web service(以 COPS WebSSO为例)
1.1 [Apache提供]直接通过AXIS调用远程的web service
我认为这种调用方式适合比较那种返回比较简单的数据的service, 比如,天气预报,这些内容肯定可以通过一个很简单的xml来返回。还有就是WebSSO,返回的就是一个字符串。
这种调用方式的好处就是简单(开发简单,调用简单,只要service提供方不改动对外的方法接口,客户端都无需有代码带动),无需对web service有太深了解,只要按照套路去掉用就可以了。
直接调用模式如下:
<<LogonClientWithURL.java>>
package ws.client;
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
public class LogonClientWithURL {
public static void main(String args[]) throws Exception {
try {
String urlname = "http://192.168.194.23:9080/Logon/services/Logon?wsdl" ;
urlname = "http://192.168.194.23:9080/Logon/services/Logon";
Service s = new Service();
Call call = (Call) s.createCall();
call.setTimeout(new Integer(5000));
call.setOperation( "getSecurityToken" );
call.setTargetEndpointAddress(urlname);
Object[] fn01 = { "john" , "john" , null ,null };
String val = (String)call.invoke(fn01);
System.out .println( "getSecurityToken(correct):" + val);
Object[] fn02 = { "john" , "john2" , null ,null };
String va2 = (String)call.invoke(fn02);
System.out .println( "getSecurityToken(wrong):" + va2);
} catch (Exception e) {
//java.io.InterruptedIOException: Read timed out
System.out.println(e.getMessage());
}
}
}
1.2 [Apache提供]使用WSDL2Java把WSDL文件转成本地类,然后像本地类一样使用。
这种方式应该可以调用所有的webService。
同时这个调用方式适合那种业务比较复杂的Service (特别是企业应用, 不是外部所有人都能无限制访问那种Service),比如,这个Service返回的xml内容比较复杂,同时多个客户端系统都需要访问这个Service,在这种情况,service提供方可能会考虑返回一个java类。毕竟,每个客户端都要解析xml也够麻烦的,还不如让service提供方返回一个类。
调用模式如下:
1)使用WSDL2Java把WSDL文件转成本地类。 我这里写了bat文件:
<<WSDL2JAVA.bat>>
set Axis_Lib=.\lib
set Java_Cmd=D:\Dev\JDK\jdk1.4.2_12\bin\java -Djava.ext.dirs=%Axis_Lib%
set Output_Path=.\src
set Package=com.ubs.ws
%Java_Cmd% org.apache.axis.wsdl.WSDL2Java -o%Output_Path% http:\\192.168.194.23:9080\Logon\services\Logon\wsdl\Logon.wsdl
Pause
运行直接生成以下java类
Logon.java
LogonService.java
LogonServiceLocator.java
LogonSoapBindingStub.java
2) <<LogonClientWithStub.java>>
package test.cis.client;
import test.cis.*;
public class LogonClientWithStub {
public static void main(String[] args) {
try {
Logon locator = new LogonServiceLocator().getLogon();
String result = locator.getSecurityToken("john" , "john" ,null , null );
System.out.println("getSecurityToken(correct): " + result);
result = locator.getSecurityToken("john" , "john2" ,null , null );
System.out.println("getSecurityToken(wrong): " + result);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
1.3 [Apache提供]直接SOAP调用远程的webservice
apache的soap项目,不过如今已经被axis取代了,后者重新进行了架构设计,功能更齐全。
前者已停止开发。所以建议用axis。也就是1.1 & 1.3
1.4 [XFire提供] 使用XFire调用WebService
有兴趣的可以下载XFire的jar来学习一下。
webservice的 发布一般都是使用WSDL(web service descriptive language)文件的样式来发布的,在WSDL文件里面,包含这个webservice暴露在外面可供使用的接口。
我们也可以在以下网站找到许多 webservice provider列表, 你可以使用下面的URL来测试你的webservice程序。
http://www.webservicex.net/ws/default.aspx
这上面列出了70多个包括很多方面的free webservice provider,utilities->global weather就可以获取全球的天气预报。
下面我们来看Java如何通过WSDL文件来调用这些web service(以 COPS WebSSO为例)
1.1 [Apache提供]直接通过AXIS调用远程的web service
我认为这种调用方式适合比较那种返回比较简单的数据的service, 比如,天气预报,这些内容肯定可以通过一个很简单的xml来返回。还有就是WebSSO,返回的就是一个字符串。
这种调用方式的好处就是简单(开发简单,调用简单,只要service提供方不改动对外的方法接口,客户端都无需有代码带动),无需对web service有太深了解,只要按照套路去掉用就可以了。
直接调用模式如下:
<<LogonClientWithURL.java>>
package ws.client;
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
public class LogonClientWithURL {
public static void main(String args[]) throws Exception {
try {
String urlname = "http://192.168.194.23:9080/Logon/services/Logon?wsdl" ;
urlname = "http://192.168.194.23:9080/Logon/services/Logon";
Service s = new Service();
Call call = (Call) s.createCall();
call.setTimeout(new Integer(5000));
call.setOperation( "getSecurityToken" );
call.setTargetEndpointAddress(urlname);
Object[] fn01 = { "john" , "john" , null ,null };
String val = (String)call.invoke(fn01);
System.out .println( "getSecurityToken(correct):" + val);
Object[] fn02 = { "john" , "john2" , null ,null };
String va2 = (String)call.invoke(fn02);
System.out .println( "getSecurityToken(wrong):" + va2);
} catch (Exception e) {
//java.io.InterruptedIOException: Read timed out
System.out.println(e.getMessage());
}
}
}
1.2 [Apache提供]使用WSDL2Java把WSDL文件转成本地类,然后像本地类一样使用。
这种方式应该可以调用所有的webService。
同时这个调用方式适合那种业务比较复杂的Service (特别是企业应用, 不是外部所有人都能无限制访问那种Service),比如,这个Service返回的xml内容比较复杂,同时多个客户端系统都需要访问这个Service,在这种情况,service提供方可能会考虑返回一个java类。毕竟,每个客户端都要解析xml也够麻烦的,还不如让service提供方返回一个类。
调用模式如下:
1)使用WSDL2Java把WSDL文件转成本地类。 我这里写了bat文件:
<<WSDL2JAVA.bat>>
set Axis_Lib=.\lib
set Java_Cmd=D:\Dev\JDK\jdk1.4.2_12\bin\java -Djava.ext.dirs=%Axis_Lib%
set Output_Path=.\src
set Package=com.ubs.ws
%Java_Cmd% org.apache.axis.wsdl.WSDL2Java -o%Output_Path% http:\\192.168.194.23:9080\Logon\services\Logon\wsdl\Logon.wsdl
Pause
运行直接生成以下java类
Logon.java
LogonService.java
LogonServiceLocator.java
LogonSoapBindingStub.java
2) <<LogonClientWithStub.java>>
package test.cis.client;
import test.cis.*;
public class LogonClientWithStub {
public static void main(String[] args) {
try {
Logon locator = new LogonServiceLocator().getLogon();
String result = locator.getSecurityToken("john" , "john" ,null , null );
System.out.println("getSecurityToken(correct): " + result);
result = locator.getSecurityToken("john" , "john2" ,null , null );
System.out.println("getSecurityToken(wrong): " + result);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
1.3 [Apache提供]直接SOAP调用远程的webservice
apache的soap项目,不过如今已经被axis取代了,后者重新进行了架构设计,功能更齐全。
前者已停止开发。所以建议用axis。也就是1.1 & 1.3
1.4 [XFire提供] 使用XFire调用WebService
有兴趣的可以下载XFire的jar来学习一下。
发表评论
-
jvm
2018-03-26 09:47 395http://www.cnblogs.com/moonands ... -
多线程
2015-11-11 16:05 349public class ThreadDemo3 { ... -
java之装饰设计模式和继承的简单区别
2015-10-29 16:24 807http://jiangnanlove.iteye.com/b ... -
java注解
2015-10-26 11:18 391Java自定义注解小结 作者:谢伟伦 学习java有两年之余了 ... -
字符串补零除0
2015-10-21 11:55 698//去零操作 String str = "0050 ... -
代理模式与装饰模式差别,适配器模式
2015-10-07 19:29 724http://blog.csdn.net/hitprince/ ... -
jsoup解析html
2015-03-31 11:17 827jsoup:解析HTML用法小结 原文 http://my ... -
license生成
2015-03-02 10:44 540package com.dameng.dmdp.utils; ... -
java 堆和栈
2014-11-27 15:18 5171.栈(stack)与堆(heap)都是J ... -
java内部类、静态内部类 小结
2014-11-26 14:12 5441)首先,用内部类是因 ... -
java 23种设计模式
2014-11-19 14:56 598http://zz563143188.iteye.com/bl ... -
java基本类型
2014-11-05 14:05 703基本类型比较 -
java修饰符权限
2014-11-05 13:58 601(1)public:可以被所有其他类所访问。 (2)priv ... -
类型转换
2014-11-05 13:44 495short s1 = 1; s1 = s1 + 1;有错,s1 ... -
Sring x = new String("xyz")
2014-11-05 13:32 511只要是new,都是重新分配堆空间,如果不区分栈和堆,这里创建了 ... -
java内部类和静态内部类调用
2014-06-23 14:06 547内部类 public class Test { clas ... -
匿名内部类
2014-06-18 15:00 441匿名内部类也就是没有 ... -
类的加载周期
2014-06-16 12:47 369类什么时候被加载/类加载时机: 第一:生成该类对象的时候,会 ... -
内部类
2014-05-05 14:43 495http://www.cnblogs.com/mengdd/a ... -
工厂模式
2014-03-24 15:17 525举两个例子以快速明白Java中的简单工厂模式: 女娲抟土造人 ...
相关推荐
Java调用WebService接口方法是Java开发中常见的任务,尤其在分布式系统和跨平台通信中扮演着重要角色。这里我们主要探讨使用Apache Axis库来实现这一功能。Apache Axis是一款开源工具,它提供了Java到SOAP(简单对象...
Java调用WebService接口是Web应用程序开发中的常见任务,主要用于实现不同系统间的远程通信和数据交换。在本资料中,我们重点关注Java如何与基于SOAP(Simple Object Access Protocol)的WebService进行交互。 1. *...
Java 调用 Webservice 接口方法 Webservice 是一种基于网络的远程过程调用(RPC)机制,允许不同的系统之间进行交互和数据交换。Java 调用 Webservice 接口方法是将 Webservice 集成到 Java 应用程序中的一个重要...
JAVA调用WEBSERVICE接口
Java调用WebService接口的方法主要涉及两个关键点:一是理解WebService的工作原理,二是使用相应的Java库进行调用。本文将详细讲解这两个方面。 首先,WebService是一种基于标准的、平台和语言无关的通信方式,它...
java调用webservice接口案例,精简,service调用webservice接口案例;不用生成一堆代码,逻辑清晰
"Java 使用 XFire 调用 webService 接口" 在本文中,我们将学习如何使用 XFire 框架在 Java 中调用 webService 接口。XFIRE 是一个基于 Java 的开源框架,用于简化 Web 服务的开发和集成。下面,我们将通过一个简单...
Java调用WebService接口是开发中常见的一种跨平台通信方式,主要通过SOAP(Simple Object Access Protocol)协议进行数据交换。在本篇文章中,我们将探讨如何在Java中调用WebService接口,特别是基于WSDL(Web ...
本文将深入探讨如何使用Java调用WebService接口,以实例分析有参方法Add的使用技巧。 首先,我们需要了解WebService的基础知识。WebService是一种基于开放标准(如SOAP、WSDL和UDDI)的Web应用程序,它能够通过HTTP...
Java调用WebService接口是开发中常见的一种跨平台通信方式,主要通过SOAP(Simple Object Access Protocol)协议进行数据交换。在本篇文章中,我们将探讨如何在Java中调用基于WSDL(Web Service Description ...
Java Axis 直接调用webservice 接口工具类, 无需根据wsdl编译客户端,需要axis相关包,测试使用axis 1.4, 附demo引入axis包后直接可以测试;
总的来说,使用Axis调用WebService接口在Java中是一种高效且灵活的方法。通过上述步骤,你可以轻松地与任何支持SOAP的WebService进行通信。在实践中,根据具体需求和项目规模,可能还需要考虑更多的细节和优化措施。
综上所述,通过Java调用HTTPS Web Service接口涉及的关键点包括证书的信任管理、自定义`SSLSocketFactory`以及正确处理网络请求。了解并掌握这些知识点,能帮助开发者在安全的环境中进行Web Service交互。
### 使用HttpClient调用WebService接口详解 #### 一、概述 在现代软件开发中,Web服务(尤其是WebService)作为实现系统间交互的一种重要手段被广泛采用。WebService提供了通过HTTP协议进行远程过程调用的能力,...
"Java 调用 Webservice 的几种方法总结" Java 调用 Webservice 的几种方法总结中,主要介绍了使用 JDK Web 服务 API、Axis 和 XFire 等方法来调用 Webservice。下面将对每种方法进行详细的介绍。 使用 JDK Web ...
3. 在Java客户端,调用WebService方法并将JSON格式的字符串作为参数传递给服务端。这个字符串将被序列化为SOAP消息,然后通过网络发送给WebService端点。在客户端代码中,一般需要有一个客户端代理类,这个代理类...
本示例,"JAVA调用Webservice接口Demo",将向我们展示如何利用Java来与Webservice进行交互,主要包含两个功能:IP查询和根据省份查找城市。这个项目可以直接运行,方便开发者快速理解并应用到实际项目中。 首先,...
调用WebService,最简单的办法当然是直接添加WEB引用,然后自动产生代理类,但是在调用JAVA的WebService时并没有这么简单,特别是对于SoapHeader的处理,通过C#添加Web引用方式访问JavaWebService的方法,除了string...
4. **调用服务方法**:通过服务代理,你可以像调用本地方法一样调用Web服务的远程方法,并传递必要的参数。 ```java String result = port.someWebServiceMethod(param1, param2); ``` 5. **解析XML响应**:Web...
最近项目中遇到需要去掉老系统的webservice服务中的insert方法,找了很久,发现这样最简单,实测有效!!!