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 ...
随机推荐
- vue 手动挂载$mount() 获取 $el
手动挂载$mount() 如果没有挂载的话,没有关联的 DOM 元素.是获取不到$el的. https://vuejs.org/v2/api/#vm-mount var MyComponent = V ...
- Win 7+Anaconda+tensorflow
Anaconda是一种拥有各种Python库的集成环境,也支持Windows.Mac和Linux系统. 1.安装 Anaconda 安装包:https://www.continuum.io/downl ...
- Centos使用光盘作为本地yum源
[root@localhost CentOS]# mkdir /media/CentOS把光盘加载到本地[root@localhost CentOS]# mount /dev/cdrom /media ...
- Android WebView学习
Android WebView学习 文章来源:小小懒羊羊个人知识管理库 权限: <uses-permission android:name="android.permission.IN ...
- 初识Quartz(一)
首先需要一个任务: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 package quartz_proj ...
- 561. Array Partition I【easy】
561. Array Partition I[easy] Given an array of 2n integers, your task is to group these integers int ...
- FastDFS单机搭建以及java客户端Demo
http://blog.csdn.net/u012453843/article/details/69951920 http://blog.csdn.net/xyang81/article/detail ...
- 基于HTML5 audio元素播放声音jQuery小插件
by zhangxinxu from http://www.zhangxinxu.com本文地址:http://www.zhangxinxu.com/wordpress/?p=1609 一.前面的些唠 ...
- 【转】Android自动化测试(UiAutomator)简要介绍
一.一个BUG引发的问题 如果研发过程中有一个BUG:“不断的切换手机语言出现花屏现象”.这个问题我们如何验证呢?我想,最好的方式应该是自动化测试. 那么,自动化测试可以完成哪些任务呢? ...
- CGI(Common Gateway Interface),通用网关接口
通用网关接口,简称CGI,是一种根据请求信息动态产生回应内容的技术.通过CGI,Web 服务器可以将根据请求不同启动不同的外部程序,并将请求内容转发给该程序,在程序执行结束后,将执行结果作为回应返回给 ...