java动态调用webservice

复制代码
其他随笔
package com.smp.common; import serverInfo.ServerInfo; import javax.xml.soap.
*; import javax.xml.transform.Source; import javax.xml.transform.Transformer; import javax.xml.transform.TransformerFactory; import javax.xml.transform.stream.StreamResult; import java.io.StringWriter; import java.net.URL; import java.util.HashMap; public class DynamicWebService { private String url = "http://xxxx:8080/SignalListenServer/SignalListenDelegate?WSDL"; private String nameSpase = "http://webservice/"; private String methodName = "getxxx"; private HashMap<String,String> param; /** * 获取结果 * * @param methadName 方法名 如getXXX * @param htParam */ public DynamicWebService(String methadName, HashMap htParam) { this.methodName = methadName; this.param = htParam; url = "http://" + ServerInfo.getWebServiceIP() + ":8080/List?wsdl"; nameSpase = "http://webservice/"; } public String GetServiceResult() { try { // Create SOAP Connection SOAPConnectionFactory soapConnectionFactory = SOAPConnectionFactory.newInstance(); SOAPConnection soapConnection = soapConnectionFactory.createConnection(); // Send SOAP Message to SOAP Server. SOAPMessage soapResponse = soapConnection.call(createSOAPRequest(), this.url); // Process the SOAP Response String s = printSOAPResponse2(soapResponse); soapConnection.close(); return GetValueByTag(s, "return"); } catch (Exception e) { System.err.println("Error occurred while sending SOAP Request to Server"); e.printStackTrace(); return ""; } } public static String GetValueByTag(String xmlStr, String tag) { int iStart = xmlStr.indexOf("<" + tag + ">") + 8; int iEnd = xmlStr.indexOf("</" + tag + ">"); return xmlStr.substring(iStart, iEnd); } /** * 入参 * @return * @throws Exception */ private SOAPMessage createSOAPRequest() throws Exception { MessageFactory messageFactory = MessageFactory.newInstance(); SOAPMessage soapMessage = messageFactory.createMessage(); SOAPPart soapPart = soapMessage.getSOAPPart(); String serverURI = this.nameSpase; // SOAP Envelope SOAPEnvelope envelope = soapPart.getEnvelope(); envelope.addNamespaceDeclaration("web", serverURI); SOAPBody soapBody = envelope.getBody(); SOAPElement soapBodyElemt = soapBody.addChildElement("web:"+this.methodName); for (String key : this.param.keySet()) { soapBodyElemt.addChildElement(key).addTextNode(this.param.get(key)); } MimeHeaders headers = soapMessage.getMimeHeaders(); headers.addHeader(this.methodName, serverURI +this.methodName); soapMessage.saveChanges(); return soapMessage; } private static String printSOAPResponse2(SOAPMessage soapResponse) throws Exception { try { TransformerFactory transformerFactory = TransformerFactory.newInstance(); Transformer transformer = transformerFactory.newTransformer(); Source sourceContent = soapResponse.getSOAPPart().getContent(); StringWriter stringWriter = new StringWriter(); StreamResult result = new StreamResult(stringWriter); transformer.transform(sourceContent, result); return stringWriter.toString(); } catch (Exception e) { e.printStackTrace(); return null; } } }
复制代码

示例:

复制代码
 package com.smp.test;


 import com.smp.common.DynamicWebService;
 import java.util.HashMap;


 public class test  {

  public static void main(String args[]) {

    HashMap ht=new HashMap();
    ht.put("arg0","{\"code\":1,\"ID\":29}");
    ht.put("arg1","106");
    String s = new DynamicWebService("getLight",ht).GetServiceResult();
    
    System.out.println(s);
  }
 }
复制代码

jar包  saaj.api.jar

posted @   伪装大牛  阅读(94)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
历史上的今天:
2015-12-15 sql 取汉字首字母
2015-12-15 delphi 取硬盘号
点击右上角即可分享
微信分享提示