java中使用axis发布和调用webService及dom4j解析xml字符串
工作中需要调用webService服务,这里记录一下如何在java中发布和调用webService。
需要的jar包:
webService服务端:
import javax.jws.WebMethod;
import javax.jws.WebService;
import javax.xml.ws.Endpoint; @WebService
public class MyWebService { //@WebMethod(exclude = true)注解用于在webService中排除某方法
@WebMethod(exclude = true)
public String hello(String name) {
System.out.println("hello:" + name);
return "hello:" + name;
} public String transcoding(String fileName, String fileId, String userId, String filePath, String newPath) {
System.out.println("transcoding...");
System.out.println("fileName:" + fileName);
System.out.println("fileId:" + fileId);
System.out.println("userId:" + userId);
System.out.println("filePath:" + filePath);
System.out.println("newPath:" + newPath); String result = "";
result += "<?xml version=\"1.0\" encoding=\"UTF-8\"?>";
result += "<root>";
result += "<hbzm>";
result += "<FileID>" + fileId + "</FileID>";
result += "<FileName>" + fileName + "</FileName>";
result += "<userid>" + userId + "</userid>";
result += "<filepath>" + filePath + "</filepath>";
result += "<newpath>" + newPath + "</newpath>";
result += "<result>ACK</result>";
result += "</hbzm>";
result += "</root>"; return result;
} public static void main(String[] args) {
/**
* 参数1:服务的发布地址 参数2:服务的实现者
*/
Endpoint.publish("http://localhost:8081/upload/transcoding", new MyWebService());
System.out.println("webservice start success");
}
}
webService客户端:
import java.rmi.RemoteException; import javax.xml.namespace.QName;
import javax.xml.rpc.ParameterMode;
import javax.xml.rpc.ServiceException; import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import org.apache.axis.encoding.XMLType;
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element; public class MyWebClient {
public static void main(String[] args) {
callTrans();
} public static void callHello() {
try {
// new 一个服务
Service sv = new Service();
// 创建一个call对象
Call call = (Call) sv.createCall();
// 设置要调用的接口地址
call.setTargetEndpointAddress("http://localhost:8081/upload/transcoding");
// 设置要调用的接口方法
call.setOperationName(new QName("http://webservice.xzh.com/", "hello"));
// 设置参数,在设定参数时,不使用服务端定义的参数名,而是arg0~argN来定义
call.addParameter("arg0", XMLType.XSD_STRING, ParameterMode.IN);
// 返回参数类型
call.setReturnType(XMLType.XSD_STRING); Object result = call.invoke(new Object[] { "jason" });
System.out.println(result);
}
catch (ServiceException e) {
e.printStackTrace();
}
catch (RemoteException e) {
e.printStackTrace();
}
} public static void callTrans() {
try {
// new 一个服务
Service sv = new Service();
// 创建一个call对象
Call call = (Call) sv.createCall();
// 设置要调用的接口地址
call.setTargetEndpointAddress("http://localhost:8081/upload/transcoding");
// 设置要调用的接口方法
call.setOperationName(new QName("http://webservice.xzh.com/", "transcoding"));
// 设置参数,在设定参数时,不使用服务端定义的参数名,而是arg0~argN来定义
call.addParameter("arg0", XMLType.XSD_STRING, ParameterMode.IN);
call.addParameter("arg1", XMLType.XSD_STRING, ParameterMode.IN);
call.addParameter("arg2", XMLType.XSD_STRING, ParameterMode.IN);
call.addParameter("arg3", XMLType.XSD_STRING, ParameterMode.IN);
call.addParameter("arg4", XMLType.XSD_STRING, ParameterMode.IN);
call.setReturnType(XMLType.XSD_STRING);
//发送转码请求
String transResult = (String) call
.invoke(new Object[] { "fileName", "fileIdTrans", "userId", "annexPathWithName", "basePath" });
//解析转码接口返回的xml报文
Document doc = DocumentHelper.parseText(transResult);
Element root = doc.getRootElement();
Element e = root.element("hbzm");
System.out.println(e.elementText("result"));
System.out.println(e.elementText("FileID"));
System.out.println(e.elementText("FileName"));
System.out.println(e.elementText("userid"));
System.out.println(e.elementText("filepath"));
System.out.println(e.elementText("newpath"));
}
catch (ServiceException e) {
e.printStackTrace();
}
catch (RemoteException e) {
e.printStackTrace();
}
catch (Exception e) {
e.printStackTrace();
}
}
}
日志截图:
服务端:
客户端:
java中使用axis发布和调用webService及dom4j解析xml字符串的更多相关文章
- Axis 发布、调用WebService(转)
一.JWS方法发布WebService 1.在官方网站下载axis的工程(这个等下就有用的)和源码.jar包等,下载地址是: http://www.apache.org/dyn/closer.cgi/ ...
- 使用CXF发布和调用webservice之HelloWorld入门
依赖的JAR cxf-2.2.10.jar jetty-6.1.21.jar jetty-util-6.1.21.jar servlet-2_5-api.jar ...
- 谈谈JAVA中的安全发布
谈谈JAVA中的安全发布 昨天看到一篇文章阐述技术类资料的"等级",看完之后很有共鸣.再加上最近在工作中越发觉得线程安全性的重要性和难以捉摸,又掏出了<Java并发编程实战& ...
- 中文乱码在java中URLEncoder.encode方法要调用两次解决
中文乱码在java中URLEncoder.encode方法要调用两次解决 一.场景: 1.我在客户端要通过get方式调用服务器端的url,将中文参数做utf-8编码,需要在js中两次的进行编码,服务器 ...
- java中采用dom4j解析xml文件
一.前言 在最近的开发中用到了dom4j来解析xml文件,以前听说过来解析xml文件的几种标准方式:但是从来的没有应用过来,所以可以在google中搜索dmo4j解析xml文件的方式,学习一下dom4 ...
- 转:在java中使用dom4j解析xml
JAVA 使用Dom4j 解析XML Java DOM4J Parser - Parse XML Document Dom4j下载及使用Dom4j读写XML简介 在java中使用dom4j解析xml ...
- 在java项目中怎样利用Dom4j解析XML文件获取数据
在曾经的学习.net时常常会遇到利用配置文件来解决项目中一些须要常常变换的数据.比方数据库的连接字符串儿等.这个时候在读取配置文件的时候.我们一般会用到一个雷configuration,通过这个类来进 ...
- 【java项目实战】dom4j解析xml文件,连接Oracle数据库
简单介绍 dom4j是由dom4j.org出品的一个开源XML解析包.这句话太官方.我们还是看一下官方给出的解释.例如以下图: dom4j是一个易于使用的.开源的,用于解析XML,XPath和XSLT ...
- 【JAVA使用XPath、DOM4J解析XML文件,实现对XML文件的CRUD操作】
一.简介 1.使用XPath可以快速精确定位指定的节点,以实现对XML文件的CRUD操作. 2.去网上下载一个“XPath帮助文档”,以便于查看语法等详细信息,最好是那种有很多实例的那种. 3.学习X ...
随机推荐
- unity, 由于project settings中time scale变成0导致动画不播放
在Mac和iOS间多次switch platform之后,忽然发现开始scene的动画不播了.进入游戏后再切回来动画恢复正常. 检查了scene的逻辑,发现没有任何问题.删除了Temp和Library ...
- Atitit. 真正的全中国文字attilax易语言的特点以及范例
Atitit. 真正的全中国文字attilax易语言的特点以及范例 1. 前言 attilax易语言是什么??1 2. attilax易语言的特点2 2.1. 支持多语言文字,不只汉字,还有藏文,维文 ...
- 基于Python3 + OpenCV3.3.1的远程监控程序
基于Python3 + OpenCV3.3.1的远程监控程序 一.环境配置 OpenCV是一个基于(开源)发行的跨平台计算机视觉库,利用OpenCV能够实现视频图像的捕获. 关于python3中Ope ...
- C语言基础(20)-文件操作(fopen,getc,fclose)
一.文件操作 读文件的顺序: 1.先打开文件 2.读写文件 3.关闭文件 1.1 fopen FILE *fopen( const char *path, const char *mode ); 函数 ...
- stylelint — css书写规范
sass lint guidance 一.安装:npm intsall -g stylelint 二.配置:http://stylelint.io/user-guide/rules/ (以下规则文件配 ...
- obj-fit
该 object-fit CSS 属性指定替换元素的内容应该如何适应到其使用的高度和宽度确定的框. 初始值 fill 适用于 替换元素 遗传 是 媒体 视觉 计算值 按规定 动画类型 离散的 为了规范 ...
- elasticJob分片跑批
业务迅速发展带来了跑批数据量的急剧增加.单机处理跑批数据已不能满足需要,另考虑到企业处理数据的扩展能力,多机跑批势在必行.多机跑批是指将跑批任务分发到多台服务器上执行,多机跑批的前提是”数据分片”.e ...
- c#的bug?
在群里面有人提出了这么一个诡异的问题,请问15.5%3.1=? 然后,我就去看了看,因为他们说结果是3.1!!!
- Spectral Graph Theory的一些定理
邻接矩阵的特征值和特征向量不会随着节点的排列不同而变化.两个图同构可以推出他们的邻接矩阵具有相同的特征值和特征向量,但是反过来不行.
- python "=",深,浅 拷贝
1.‘=’ 无论怎么改变,2者都一致 2.深浅拷贝,id都不同 3.深浅拷贝的区别在于拷贝层次, 引用是否拷贝 总结