工作中需要调用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. DevStore开发人员服务有奖征文:小谈新浪微博开放平台

    DevStore开发人员服务有奖征文:小谈新浪微博开放平台 笔者接入新浪微博开发平台也有一段时间了,对整个平台的接入也算比較熟悉,新浪提供了统一的API接口,能够让开发人员更方便的使用API来实现自己 ...

  2. Angularjs学习笔记3_datepicker

    1.使用jquery-ui +angular      <script src="http://libs.useso.com/js/jquery/1.11.1/jquery.js&qu ...

  3. string 的函数

    string 有一个很好用到函数:substr(index). 去掉前index个字符.

  4. mockito模拟静态方法

    这里要用到使用powerMock 注意点: 1 @RunWith(PowerMockRunner.class) 2 PowerMockito.mockStatic(StaticTest.class); ...

  5. Debian run jar like a native program

    sudo apt install binfmt-support jarwrapper 比如 swagger-codegen wget -O ~/.local/bin/swagger-codegen h ...

  6. 当synchronized关键字和this关键字

    package cn.itcast_01_mythread.thread.testThread; public class MyThreadWithImpliment_Synch_method imp ...

  7. Yarn源码分析之参数mapreduce.job.reduce.slowstart.completedmaps介绍

    mapreduce.job.reduce.slowstart.completedmaps是MapReduce编程模型中的一个参数,这个参数的含义是,当Map Task完成的比例达到该值后才会为Redu ...

  8. .net版本和操作系统

    转自: http://msdn.microsoft.com/zh-cn/library/bb822049(v=vs.110).aspx 服务器操作系统 包括 还可以安装 Windows Server ...

  9. Quartz定时任务学习(三)属性文件和jar

    以下是我在应用的的一个基本配置: #---------调度器属性----------------org.quartz.scheduler.instanceName = TestSchedulerorg ...

  10. 怎样在asp.net中用一般处理文件ashx实现下载功能

    /// <summary> /// 下载文件,支持大文件.续传.速度限制.支持续传的响应头Accept-Ranges.ETag,请求头Range . /// Accept-Ranges:响 ...