工作中需要调用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字符串的更多相关文章

  1. Axis 发布、调用WebService(转)

    一.JWS方法发布WebService 1.在官方网站下载axis的工程(这个等下就有用的)和源码.jar包等,下载地址是: http://www.apache.org/dyn/closer.cgi/ ...

  2. 使用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     ...

  3. 谈谈JAVA中的安全发布

    谈谈JAVA中的安全发布 昨天看到一篇文章阐述技术类资料的"等级",看完之后很有共鸣.再加上最近在工作中越发觉得线程安全性的重要性和难以捉摸,又掏出了<Java并发编程实战& ...

  4. 中文乱码在java中URLEncoder.encode方法要调用两次解决

    中文乱码在java中URLEncoder.encode方法要调用两次解决 一.场景: 1.我在客户端要通过get方式调用服务器端的url,将中文参数做utf-8编码,需要在js中两次的进行编码,服务器 ...

  5. java中采用dom4j解析xml文件

    一.前言 在最近的开发中用到了dom4j来解析xml文件,以前听说过来解析xml文件的几种标准方式:但是从来的没有应用过来,所以可以在google中搜索dmo4j解析xml文件的方式,学习一下dom4 ...

  6. 转:在java中使用dom4j解析xml

    JAVA 使用Dom4j 解析XML Java DOM4J Parser - Parse XML Document Dom4j下载及使用Dom4j读写XML简介 在java中使用dom4j解析xml ...

  7. 在java项目中怎样利用Dom4j解析XML文件获取数据

    在曾经的学习.net时常常会遇到利用配置文件来解决项目中一些须要常常变换的数据.比方数据库的连接字符串儿等.这个时候在读取配置文件的时候.我们一般会用到一个雷configuration,通过这个类来进 ...

  8. 【java项目实战】dom4j解析xml文件,连接Oracle数据库

    简单介绍 dom4j是由dom4j.org出品的一个开源XML解析包.这句话太官方.我们还是看一下官方给出的解释.例如以下图: dom4j是一个易于使用的.开源的,用于解析XML,XPath和XSLT ...

  9. 【JAVA使用XPath、DOM4J解析XML文件,实现对XML文件的CRUD操作】

    一.简介 1.使用XPath可以快速精确定位指定的节点,以实现对XML文件的CRUD操作. 2.去网上下载一个“XPath帮助文档”,以便于查看语法等详细信息,最好是那种有很多实例的那种. 3.学习X ...

随机推荐

  1. JAVA WEB项目开发案例精粹

    http://www.blogjava.net/zongbao/archive/2012/07/24/383884.htmlJAVA WEB项目开发案例精粹.pdf main Alt + / => ...

  2. Office-Excel取消掉每次打开弹出的自定义项安装程序弹窗

    电脑重装了系统之后,重新安装了office2013,发现每次打开Excel都会弹出一个如下图所示的弹窗,比较烦人. 要取消掉这个弹窗也是比较简单的. 打开“文件”--“选项”--“加载项” 在下面的管 ...

  3. 一、Core Animation简介

    一.Core Animation简介 * Core Animation,中文翻译为核心动画,它是一组非常强大的动画处理API,使用它能做出非常炫丽的动画效果,而且往往是事半功倍.也就是说,使用少量的代 ...

  4. hdu1695 GCD2 容斥原理 求x属于[1,b]与y属于[1,d],gcd(x,y)=k的对数。(5,7)与(7,5)看作同一对。

    GCD Time Limit: / MS (Java/Others) Memory Limit: / K (Java/Others) Total Submission(s): Accepted Sub ...

  5. ptmalloc、tcmalloc和jemalloc

    内存优化总结:ptmalloc.tcmalloc和jemalloc 转载 2017年09月05日 18:57:12 3674 转载于:http://www.cnhalo.net/2016/06/13/ ...

  6. python 爬虫1 Urllib库的基本使用

    1.简单使用 import urllib2 response = urllib2.urlopen("http://www.baidu.com") print response.re ...

  7. Error:“const char*”类型的实参与“wchar_t”类型的形参不兼容

    MainApp\RPolarView.cpp(1571): error C2664: “ATL::CStringT<BaseType,StringTraits>::ReverseFind” ...

  8. Java语言如何进行异常处理,关键字:throws、throw、try、catch、finally分别如何使用?

    先上代码再进行分析 public class Test { public static void main(String[] args) { try{ int i = 100 / 0; System. ...

  9. o.a.catalina.core.AprLifecycleListener : An incompatible version [1.2.7] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]

    1.错误信息提示: 2019-04-16 22:02:05.811 ERROR 18112 --- [           main] o.a.catalina.core.AprLifecycleLi ...

  10. hdu1754(splay tree 单点更新,成段查询)

    题意就是简单的点更新,成段查询. splay tree 果真是常数比较大的log(n)操作. 比线段树还慢了这么多. // // main.cpp // splay // // Created by ...