WebService + xml

一、请求参数

package com.zhicall.core.ws;

import java.util.Map;

import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;

public class WSRequest {

    private String methodName;

    private String wsurl;

    private String name;

    private Map<String,String> params;

    public WSRequest(){}

    public WSRequest(String wsurl,String name,Map<String,String> params,String methodName){
        this.wsurl = wsurl;
        this.name = name;
        this.methodName = methodName;
        this.params = params;
    }

    public String getWsurl() {
        return wsurl;
    }

    public void setWsurl(String wsurl) {
        this.wsurl = wsurl;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Map<String, String> getParams() {
        return params;
    }

    public void setParams(Map<String, String> params) {
        this.params = params;
    }

    public String getMethodName() {
        return methodName;
    }

    public void setMethodName(String methodName) {
        this.methodName = methodName;
    }

    public String getRequestXml(){
        Document doc = DocumentHelper.createDocument();
        Element reqele = doc.addElement("Request");
        reqele.addElement("FunName").setText(methodName);
        Element parele = reqele.addElement("Params");
        if(params != null && !params.isEmpty()){
            for (String key : params.keySet()) {
                Element param = parele.addElement("Param");
                String value = params.get(key);
                param.addAttribute("Name", key).addAttribute("Value", value);
            }
        }
        return doc.asXML();
    }
}

二、结果获取

package com.zhicall.core.ws;

import java.net.MalformedURLException;
import java.rmi.RemoteException;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;

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.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class WebServiceUtil {

    private static Logger logger = LoggerFactory.getLogger(WebServiceUtil.class);

    public static String getWsResult(WSRequest request) {
        String result = "no result!";
        try {
            String endpoint = request.getWsurl();
            Service service = new Service();
            Call call = (Call) service.createCall();
            call.setTargetEndpointAddress(new java.net.URL(endpoint));
            // 服务名
            call.setOperationName(new QName("http://tempuri.org/", request.getName()));
            // 定义入口参数和参数类型
            call.addParameter("Data", XMLType.XSD_STRING, ParameterMode.IN);
            call.setUseSOAPAction(true);
            // Action地址
            // call.setSOAPActionURI("http://tempuri.org/"+"XHLisWebserviceFun");
            // 定义返回值类型
            call.setReturnType(new QName("http://www.w3.org/2001/XMLSchema-instance", "String"));

            // 调用服务获取返回值
            String requestxml = request.getRequestXml();
            logger.info("getWsResult:requestXML:"+requestxml);
            result = String.valueOf(call.invoke(new Object[] { requestxml }));
            logger.info("getWsResult:responseXML:"+result);
            return result.replace("&nbsp;", " ");
        } catch (ServiceException e) {
            logger.info("getWsResult:ERROR"+e.getMessage());
        } catch (RemoteException e) {
            logger.info("getWsResult:ERROR"+e.getMessage());
        } catch (MalformedURLException e) {
            logger.info("getWsResult:ERROR"+e.getMessage());
        }
        return result;
    }
}

三、XML解析成对象

XStream xs = new XStream();
        xs.processAnnotations(new Class[]{ResponseResult.class,LisReponse.class});
        Object obj = xs.fromXML(wsResult);

四、对象参数

package com.zhicall.domain.wsentity;

import java.util.List;

import org.apache.ibatis.type.Alias;

import com.thoughtworks.xstream.annotations.XStreamAlias;

@XStreamAlias("Response")
public class ResponseResult<T> {

    @XStreamAlias("ResultCode")
    private String ResultCode;

    @XStreamAlias("ResultMsg")
    private String ResultMsg;

    @XStreamAlias("Items")
    private List<T> Items;

    public String getResultCode() {
        return ResultCode;
    }

    public void setResultCode(String resultCode) {
        ResultCode = resultCode;
    }

    public String getResultMsg() {
        return ResultMsg;
    }

    public void setResultMsg(String resultMsg) {
        ResultMsg = resultMsg;
    }

    public List<T> getItems() {
        return Items;
    }

    public void setItems(List<T> items) {
        Items = items;
    }

}
时间: 2024-10-08 10:58:59

WebService + xml的相关文章

Delphi 读取 c# webservice XML的base64编码图片字符串转化图片并显示

Delphi 读取 c# webservice XML的base64编码图片字符串转化图片并显示 在 开发中遇到应用c#及asp.net的在的webservice 保存图片并以xml文件形式现实出来 并用delphi调用 的方法: 1.c#的webservice现实见 http://www.greensoftcode.net/techntxt/20127118441582992373 之前的文章. 2.在客户端用delphi显示 发现asp.net xml形式输出的图片是base64字符串形式.

在java web项目中集成webservice

公司要求在项目中加入webservice服务,因为项目中使用了spring框架,所以在这里使用与spring兼容性较好的cxf来实现 cxf所需jar包 spring的jar包就不贴了 一:创建webservice服务器 1)创建一个服务接口 package com.service; import javax.jws.WebParam; import javax.jws.WebService; @WebService public interface IHelloWorld { public S

web.xml中常用元素的解读

前言 针对一个项目而言,通常会有几类XML文件需要书写. web.xml spring-context.xml spring-mvc.xml other.xml ... 不管有多少配置文件,可以肯定的一点,这些配置文件,都是在web.xml中被指定的. 后续慢慢阐述. web.xml web.xml可以理解为一个Java Web项目入口.在web.xml中通常会有如下几种类型的节点存在,按照加载顺序排列. Listener 此为监听器,在上面3个中是后弦加载的,表示监听某个动作是否发生,发生后要

Android:调用webservice详解;

很多时候要用到android端调用webservice服务, 下面例子就是调用webservice 以及对流的多种方式处理: package com.example.android_webservice; import java.io.BufferedReader; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.InputSt

Axis2发布webservice(4)&mdash;webservice的异步调用

一,发布一个webservice,代码如下 package com.hoo.service; public class AsynchronousService { public String execute() throws InterruptedException{ //让当前线程睡眠5钟,展示异步调用 Thread.sleep(5000); return "done"; } } 二.发布Service,参见前面教程,不多讲 三.RPC方式异步调用: import java.io.I

webservice cxf 实例

转自百度空间:http://hi.baidu.com/cpuhandou/item/b8b439860afb99c9ee083d65 CXF webservice 开发入门 1.       新建一个JavaWebProject,命名为cxfDemo选择[next],为project添加userLib库.        2.       打开新建的project,在src下新建包com.handou.cxf.test.在包中新建inteface名称为HelloWorld代码如下:@WebServ

java web项目(spring项目)中集成webservice ,实现对外开放接口

什么是WebService?webService小示例 点此了解 下面进入正题: Javaweb项目(spring项目)中集成webservice ,实现对外开放接口步骤: 准备: 采用与spring兼容性较好的cxf来实现 cxf 的  jar下载地址: http://cxf.apache.org/download.html 选择zip格式下载,解压后的lib目录下的jar 需要最少的jar如下: cxf-2.3.3.jargeronimo-annotation_1.0_spec-1.1.1.

Axis2创建WebService实例

  一.Axis2的下载和安装 1.可从http://ws.apache.org/axis2/ 下载Axis2的最新版本:      可以下载如下两个zip包:      axis2-1.5.4-bin.zip      axis2-1.5.4-war.zip      其中 axis2-1.5.4-bin.zip文件中包含了Axis2中所有的jar文件,       axis2-1.5.4-war.zip文件用于将WebService发布到Web容器中. 2.将axis2-1.5.4-war.

如何在SpringMVC项目中部署WebService服务并打包生成客户端

场景 某SpringMVC项目原本为一个HTTP的WEB服务项目,之后想在该项目中添加WebService支持,使该项目同时提供HTTP服务和WebService服务.其中WebService服务通过 /ws/** 地址拦截. 配置 通过配置让SpringMVC支持WebService. 依赖 首先通过Maven引入必要依赖包. org.apache.cxf org.apache.neethi com.ibm.wsdl4j org.apache.XmlSchema Web.xml 通过配置Web