java进行webservice调用

java进行webservice调用

package com.sgcc.yjzh.util;

import java.io.IOException;
import java.nio.charset.Charset;
import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import org.apache.http.HttpEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.util.EntityUtils;
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;

import net.sf.json.JSONObject;

public class WebServiceUtil {
    
    /**
     * 接口调用请求xml拼接
     * @param method 调用方法
     * @param obj 接口报文内容
     * @return
     */
    public static String joinSoapXml(String method,String obj){
        StringBuffer sb=new StringBuffer();
        sb.append("<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:sgcc=\"http://www.sgcc.com.cn\">");
        sb.append(" <soapenv:Header/>");
        sb.append(" <soapenv:Body>");
        sb.append("<sgcc:"+method+">");
        sb.append("<OUTPUT>");
        sb.append("<![CDATA[");
        sb.append(obj);
        sb.append("]]>");
        sb.append("</OUTPUT>");
        sb.append("</sgcc:"+method+">");
        sb.append("</soapenv:Body>");
        sb.append("</soapenv:Envelope>");
        return sb.toString();
    }
    /**
     * http调用接口方法
     * @param url 接口地址
     * @param soapRequestData 接口xml报文
     * @return
     */
    public static String postSoap(String url,String soapRequestData){
        String xmlString="";
        CloseableHttpClient httpClient = null;  
        try {  
            HttpClientBuilder httpClientBuilder=HttpClientBuilder.create();
            httpClient = httpClientBuilder.build();  
            HttpPost httppost = new HttpPost(url); //webservice服务地址  
            HttpEntity data = new StringEntity(soapRequestData,Charset.forName("utf-8"));  
            httppost.setHeader("Content-Type","application/soap+xml; charset=utf-8");    
            httppost.setEntity(data);   
            CloseableHttpResponse response=httpClient.execute(httppost);
            HttpEntity entity=response.getEntity();
            if(entity!=null){
                xmlString = EntityUtils.toString(entity,"utf-8");  
            }
        } catch (Exception e) {
            e.printStackTrace();
            return e.getMessage();
        } finally {  
            try {
                httpClient.close();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }  
        }  
       return xmlString;
    }
    
    /**
     * 解析调用接口返回的报文
     * @param json
     * @return
     */
    public static List<Map<String,Object>> ReturnXmlForList(String paraString){
        List<Map<String,Object>> list = new ArrayList();
        try {
            Document doc;
            doc = DocumentHelper.parseText(paraString);
            Element root = doc.getRootElement();            
            Iterator itRoot = root.elementIterator();
            while (itRoot.hasNext()) {
                Map<String,Object> map = new LinkedHashMap<String, Object>();
                Element ROOTChild = (Element) itRoot.next();
                Iterator ITEM = ROOTChild.elementIterator();
                while(ITEM.hasNext()){
                    Element itemChild = (Element) ITEM.next();
                    map.put(itemChild.getName(), itemChild.getStringValue());
                }
                list.add(map);
            }   
        } catch (Exception e) {
            e.printStackTrace();
        }
        return list;
    }
    /**
     * 接口返回报文的拼接
     * @param code 代码
     * @param msg 消息
     * @param data 数据
     * @return
     */
    public static String returnSoapJson(String code,String msg,
            JSONObject data){
        JSONObject obj=new JSONObject();
        obj.put("code", code);
        obj.put("msg", msg);
        obj.put("data", data);
        return obj.toString();
    }
    
}

posted @ 2021-07-11 14:00  幸运刘  阅读(124)  评论(0)    收藏  举报