package com.artfess.base.util; import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.io.PrintWriter; import java.io.StringWriter; import java.net.HttpURLConnection; import java.net.URL; import java.util.HashMap; import java.util.Map; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.http.HttpStatus; /** * Soap工具类 * * @company 广州宏天软件股份有限公司 * @author heyifan * @email heyf@jee-soft.cn * @date 2018年4月11日 */ public class SoapUtil { protected static Logger logger = LoggerFactory.getLogger(SoapUtil.class); /** * 获取请求的数据 * * @param url 请求的URl * @param soapXml soap 包的Xml * @return map的key : *

* success : 是否成功,true 成功,false 失败 *

* code : 状态码,http 请求状态码200 表示成功,500 表示服务器异常 -100表示服务器未启动 *

* response : 请求返回的soap包 *

* result 错误正确返回的结果 * */ public static Map getResponse(String url, String soapXml) { Map map = new HashMap(); StringBuffer sb = new StringBuffer(); int code = -100;// 状态码 boolean success = false; String result = ""; HttpURLConnection conn = null; OutputStreamWriter os = null; InputStreamReader isr = null; InputStream is = null; BufferedReader br = null; try { URL servletURL = new URL(url); conn = (HttpURLConnection) servletURL.openConnection(); conn.setDoInput(true); conn.setDoOutput(true); conn.setRequestProperty("Content-Type", "text/xml;charset=UTF-8");// 解决乱码问题 // Send data os = new OutputStreamWriter(conn.getOutputStream()); os.write(soapXml); os.flush(); code = conn.getResponseCode(); if (code == HttpStatus.OK.value()) {// 200 : OK(成功) 一切正常 is = conn.getInputStream(); success = true; } else is = conn.getErrorStream(); // Get the response isr = new InputStreamReader(is, "UTF-8"); br = new BufferedReader(isr); String line = ""; while ((line = br.readLine()) != null) { sb.append(line); } } catch (Exception e) { logger.error("请求出错了.", e); StringWriter sw = new StringWriter(); e.printStackTrace(new PrintWriter(sw, true)); result = sw.toString(); } finally { // 关闭流 try { if (os != null) os.close(); if (is != null) is.close(); if (isr != null) isr.close(); if (br != null) br.close(); } catch (Exception e) { e.printStackTrace(); logger.error("关闭流出错.", e); } } map.put("success", success); map.put("code", code); map.put("response", sb.toString()); map.put("result", result); return map; } }