zoukankan      html  css  js  c++  java
  • java 调用webservice并解析xml结果

     
    import com.yemast.roadcqc.server.webserivce.login.request.UserInfoRequest;
    import lombok.extern.slf4j.Slf4j;
    import org.apache.axiom.om.*;
    import org.apache.axis2.addressing.EndpointReference;
    import org.apache.axis2.client.Options;
    import org.apache.axis2.client.ServiceClient;
    import javax.xml.namespace.QName;
    import java.lang.reflect.Field;
    import java.util.HashMap;
    import java.util.Iterator;
    import java.util.Map;

    @Slf4j
    public class Test { static final String url = "http://localhost:8091/roadcqc_webservice_war_exploded/services/loginIntf?wsdl"; static final String method = "getToken"; static final String targetNamespace = "http://login.webserivce.server.roadcqc.yemast.com"; public static void main(String[] args) { axis2WebService(); } private static void axis2WebService() { try { // 参数值 UserInfoRequest u = new UserInfoRequest(); u.setUploadDateTime("2020-06-01"); u.setUserName("admin"); u.setPassword("admin"); u.setUploadDateTime("2020-01-1"); u.setToken(""); OMElement o = requestWs(targetNamespace,url,method,u); Map m = getResultToMap(o); System.out.println(m.toString()); } catch (Exception ex) { ex.printStackTrace(); } } private static OMElement requestWs(String targetNamespace, String url, String method, Object o) { try { ServiceClient sender = new ServiceClient(); EndpointReference endpointReference = new EndpointReference(url); Options options = new Options(); options.setTo(endpointReference); sender.setOptions(options); OMFactory fac = OMAbstractFactory.getOMFactory(); // 这个和qname差不多,设置命名空间 OMNamespace omNs = fac.createOMNamespace(targetNamespace, ""); //这个是namespace的str OMElement data = fac.createOMElement(method, omNs); //method是方法 QName qname = new QName("request"); //固定的request参数 webservice接收参数的名称 OMElement inner = fac.createOMElement(qname); if (o != null) { //通过反射获取参数 Class c = o.getClass(); Field[] fields = c.getDeclaredFields(); for (Field f : fields) { f.setAccessible(true); QName qname1 = new QName(f.getName()); OMElement inner1 = fac.createOMElement(qname1); inner1.setText(String.valueOf(f.get(o))); inner.addChild(inner1); } } data.addChild(inner); // 发送数据,返回结果 OMElement omElement = sender.sendReceive(data); return omElement; } catch (Exception e) { log.error("ws error:", e); } return null; } //解析返回的结果 public static Map<String, Object> getResultToMap(OMElement element) { Map<String, Object> map = new HashMap<>(); if(element == null ) return map; Iterator iterator = element.getChildElements();//response while (iterator.hasNext()) { //n:return OMElement result = (OMElement) iterator.next(); Iterator iterator_layer2 = result.getChildElements(); while (iterator_layer2.hasNext()) { // 结果 OMElement result_2 = (OMElement) iterator_layer2.next(); String key = result_2.getLocalName(); String value = result_2.getText(); map.put(key, value); } } return map; } }
  • 相关阅读:
    5.21 CSS样式表练习
    5.20 c#验证码练习
    5.20 邮箱注册,及网页嵌套,知识点复习
    5.19 网页注册练习
    5.19练习标签及其 定义
    5.16 兔子生兔子,日期时间练习
    5.15 复习;共5题
    5.11 集合 与 特殊集合
    5.11 集合与特殊集合
    WinForm1
  • 原文地址:https://www.cnblogs.com/syscn/p/13157798.html
Copyright © 2011-2022 走看看