WebUtils.java
import java.io.ByteArrayOutputStream; import java.net.URL; import javax.xml.transform.Transformer; import javax.xml.transform.TransformerFactory; import javax.xml.transform.dom.DOMSource; import javax.xml.transform.stream.StreamResult; import org.codehaus.xfire.client.Client; /** * * @author Marydon * @createTime 2018年3月9日上午10:40:01 * @updateTime * @Email:Marydon20170307@163.com * @version:1.0.0 */ public class WebUtils { /** * 接口调用方法 内部使用xfire 调用 * @param param1 * 接口传参 * @param methodName * 调用接口方法名 * @param url * 调用接口地址 * @return String 返回结果 */ public static String call(Object[] param1, String methodName, String url) { // 调用接口 if (null == url) { throw new RuntimeException("接口地址不能为空!"); } if (!url.endsWith("?wsdl")) { url += "?wsdl"; } // 接口名称 String intefaceName = methodName; // 客户端 Client client; Object[] results; try { client = new Client(new URL(url)); results = client.invoke(intefaceName, param1); if (results != null && results.length > 0) { if (results[0] instanceof String) { return (String) results[0]; } else if (results[0] instanceof org.w3c.dom.Document) { org.w3c.dom.Document doc = (org.w3c.dom.Document) results[0]; return WebUtils.w3cDocument2String(doc); } else { if (results.length > 1) { System.err.println("返回结果长度:" + results.length); } return String.valueOf(results[0]); } } } catch (Exception e) { // log.error("调用接口失败"+url+":"+methodname,e); } return null; } /** * 将w3c定义的Document对象转换为String字符串 * * @param doc * @return * @throws Exception */ public static String w3cDocument2String(org.w3c.dom.Document doc) { // 设置源和目标 DOMSource src = new DOMSource(doc); StreamResult sos; ByteArrayOutputStream bos = new ByteArrayOutputStream(); try { sos = new StreamResult(bos); // 转换器 Transformer t = TransformerFactory.newInstance().newTransformer(); t.transform(src, sos); return bos.toString("UTF-8"); } catch (Exception e) { e.printStackTrace(); } return null; } }以接口的形式进行传输时,"&"是特殊符号,不能直接传,必须转义成"&",否则报错。
转载于:https://www.cnblogs.com/Marydon20170307/p/8696401.html
相关资源:webservice接口调用实例