Java调用WebService方法总结(6)--XFire调用WebService
XFire是codeHaus组织提供的一个WebService开源框架,目前已被Apache的CXF所取代,已很少有人用了,这里简单记录下其调用WebService使用方法。官网现已不提供下载,可以到maven仓库下载,下载地址:https://search.maven.org/artifact/org.codehaus.xfire/xfire-distribution/1.2.6/jar。文中demo所使用到的软件版本:Java 1.8.0_191、Xfire 1.2.6。
1、准备
参考Java调用WebService方法总结(1)--准备工作
2、调用
2.1、Client方式
public static void client(String param) {
try {
Client client = new Client(new URL("http://www.webxml.com.cn/WebServices/TraditionalSimplifiedWebService.asmx?wsdl"));
Object[] results = client.invoke("toTraditionalChinese", new Object[]{param});
System.out.println(results[0]);
} catch (Exception e) {
e.printStackTrace();
}
}
如果服务端是用JAX-WS发布的,需指定RPC方式(接口类上增加@SOAPBinding(style = SOAPBinding.Style.RPC));调用本地的服务:
/**
* JAX-WS发布的服务端需指定RPC方式
* @param param
*/
public static void client2(String param) {
try {
Client client = new Client(new URL("http://10.40.103.48:9006/zsywservice/TestService?wsdl"));
Object[] results = client.invoke("hello", new Object[]{param});
System.out.println(results[0]);
} catch (Exception e) {
e.printStackTrace();
}
}
2.2、ServiceFactory方式
这种方式需要把接口类拷贝到客户端。测试时调用本地服务时参数传不进去,总是null;不知为何;有了解的朋友请指正。
/**
* 调用本地服务时参数传不进去,总是null
* @param param
*/
public static void factory(String param) {
try {
Service serviceModel = new ObjectServiceFactory().create(ITestService.class, null, "http://ws.zsyw.inspur.com/", null);
XFireProxyFactory factory = new XFireProxyFactory();
ITestService testService = (ITestService) factory.create(serviceModel, "http://10.40.103.48:9006/zsywservice/TestService?wsdl");
String result = testService.hello(param);
System.out.println(result);
} catch (Exception e) {
e.printStackTrace();
}
}
2.3、完整代码
package com.inspur.ws; import java.net.URL; import org.codehaus.xfire.client.Client;
import org.codehaus.xfire.client.XFireProxyFactory;
import org.codehaus.xfire.service.Service;
import org.codehaus.xfire.service.binding.ObjectServiceFactory; import com.inspur.zsyw.ws.ITestService; /**
*
* xfire调用WebService
*
*/
public class Xfire {
public static void client(String param) {
try {
Client client = new Client(new URL("http://www.webxml.com.cn/WebServices/TraditionalSimplifiedWebService.asmx?wsdl"));
Object[] results = client.invoke("toTraditionalChinese", new Object[]{param});
System.out.println(results[0]);
} catch (Exception e) {
e.printStackTrace();
}
} /**
* JAX-WS发布的服务端需指定rpc方式
* @param param
*/
public static void client2(String param) {
try {
Client client = new Client(new URL("http://10.40.103.48:9006/zsywservice/TestService?wsdl"));
Object[] results = client.invoke("hello", new Object[]{param});
System.out.println(results[0]);
} catch (Exception e) {
e.printStackTrace();
}
} /**
* 调用本地服务时参数传不进去,总是null
* @param param
*/
public static void factory(String param) {
try {
Service serviceModel = new ObjectServiceFactory().create(ITestService.class, null, "http://ws.zsyw.inspur.com/", null);
XFireProxyFactory factory = new XFireProxyFactory();
ITestService testService = (ITestService) factory.create(serviceModel, "http://10.40.103.48:9006/zsywservice/TestService?wsdl");
String result = testService.hello(param);
System.out.println(result);
} catch (Exception e) {
e.printStackTrace();
}
} public static void main(String[] args) {
client("大学");
client2("大学");
factory("大学");//hello,null
}
}
Java调用WebService方法总结(6)--XFire调用WebService的更多相关文章
- Java调用WebService方法总结(7)--CXF调用WebService
CXF = Celtix + XFire,继承了Celtix和XFire两大开源项目的精华,是一个开源的,全功能的,容易使用的WebService框架.文中所使用到的软件版本:Java 1.8.0_1 ...
- Java调用WebService方法总结(5)--Axis2调用WebService
Axis2是新一点Axis,基于新的体系结构进行了全新编写,有更强的灵活性并可扩展到新的体系结构.文中demo所使用到的软件版本:Java 1.8.0_191.Axis2 1.7.9. 1.准备 参考 ...
- Java调用WebService方法总结(4)--Axis调用WebService
Axis是比较常用的WebService框架,该项目在2006实现了最终版,后面就没有更新了.文中demo所使用到的软件版本:Java 1.8.0_191.Axis 1.4. 1.准备 参考Java调 ...
- Java调用WebService方法总结(3)--wsimport调用WebService
wsimport是JDK自带的把WSDL转成Java的工具,可以很方便的生成调用WebService的代码.文中所使用到的软件版本:Java 1.8.0_191. 1.准备 参考Java调用WebSe ...
- Java调用WebService方法总结(2)--JAX-WS调用WebService
用JAX-WS(Java API for XML Web Services)调用WebService不需要引入其他框架,都是JDK自带的:文中所使用到的软件版本:Java 1.8.0_191.Dom4 ...
- 既然 start() 方法会调用 run() 方法,为什么我们调用 start() 方法,而不直接调用 run() 方法?
当你调用 start() 方法时,它会新建一个线程然后执行 run() 方法中的代码.如果直接调用 run() 方法,并不会创建新线程,方法中的代码会在当前调用者的线程中执行
- JAVA学习笔记--方法中的参数调用是引用调用or值调用
文献来源:<JAVA核心技术卷Ⅰ>,第4章第5节 (没有相关书籍的可看传送门) ps:测试demo因为偷懒,用的是String对象 结论:Java使用的是对象的值引用.即将任何对象所在内存 ...
- Java调用WebService方法总结(1)--准备工作
WebService是一种跨编程语言.跨操作系统平台的远程调用技术,已存在很多年了,很多接口也都是通过WebService方式来发布的:本系列文章主要介绍Java调用WebService的各种方法,使 ...
- java基础:方法的定义和调用详细介绍,方法同时获取数组最大值和最小值,比较两个数组,数组交换最大最小值,附练习案列
1. 方法概述 1.1 方法的概念 方法(method)是将具有独立功能的代码块组织成为一个整体,使其具有特殊功能的代码集 注意: 方法必须先创建才可以使用,该过程成为方法定义 方法创建后并不是直接可 ...
随机推荐
- CFD-Post批量添加截面
有时候我们需要在一个算例中截取多个面 我们打开CFD-Post 我们编写如下的Python代码来实现在一个算例当中截取多个面 源代码如下: 上述代码完成以后,我们重新打开CFD-Post
- 用Visual Studio编写UDF的一点小技巧(二)
- K8S API对象
POD Pod是在K8s集群中运行部署应用或服务的最小单元,它是可以支持多容器的.Pod的设计理念是支持多个容器在一个Pod中共享网络地址和文件系统,可以通过进程间通信和文件共享这种简单高效的方式组合 ...
- HearthBuddy投降插件2019-11-01的使用
在AutoConcede.cs文件中找到如下代码 private List<int> _winList = new List<int> {0, 2, 4, 6, 8}; 现在的 ...
- ASP.NET与非托管DLL的那些事儿【转+增】
https://www.cnblogs.com/yeahgis/archive/2011/11/12/2246341.html ASP.NET与非托管DLL的那些事儿 环境VS2010 语言:ISO ...
- 利用select/poll监听多个设备详解
如果一个应用程序去处理多个设备,例如应用程序读取网路数据,按键,串口,一般能想到的有三种方法: 方法1:串行+阻塞的方式读取:while(1) { read(标准输入);read(网络);}缺点:每当 ...
- TTA 方法
可将准确率提高若干个百分点,它就是测试时增强(test time augmentation, TTA). 这里会为原始图像造出多个不同版本,包括不同区域裁剪和更改缩放程度等,并将它们输入到模型中: 然 ...
- python简单的游戏场景代码
模拟英雄联盟游戏场景的简单场景 最后计算出英雄的战斗力 class Hero: def __init__(self, na, gen, age, fig): self.name = na self.g ...
- 在asp.net core中使用NLog
第一步:nuget 引入 NLog.Web.AspNetCore 4.5+ 第二步:放入nlog.config <?xml version="1.0" encoding= ...
- pycharm安装pyinstaller将pygame打包成exe
首先,使用pycharm自带的下载包工具,File-Settings-Project Interpreter,如图: 安装完成后,发现安装到了Python根目录下,我的在C:\python34\Scr ...