axis方式调用WebService接口、xml转json

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/yswKnight/article/details/82225895

axis方式调用WebService接口

xml转json


一、引入pom文件或jar包

<dependency>
    <groupId>org.apache.axis</groupId>
    <artifactId>axis</artifactId>
    <version>1.4</version>
</dependency>

二、写调用工具类

    /**
     * axis方式访问webservice
     * 
     * @param dataMap
     *            请求的xml的报文
     * @param endPoint
     *            webservice的wsdl地址,例如:http://localhost:8080/project/services/mainName?wsdl
     * @param namespace
     *            调用方法的命名空间
     * @param method
     *            调用的方法名
     * @return 返回调用的报文(xml)
     * 
     */
    public static String invokeByAxis(Map<String,Object> dataMap, String endPoint, String namespace, String method) {
        String responseXML = "";
        Service service = new Service();
        try {
            Call call = (Call) service.createCall();
            //设置请求超时时间
            call.setTimeout(5000);
            //webservice接口地址
            call.setTargetEndpointAddress(endPoint); 
            //请求方法
            call.setOperationName(method);
            //请求命名空间
            call.setOperationName(new javax.xml.namespace.QName(namespace, method));
            //是否是soapaction
            call.setUseSOAPAction(true);
            //封装请求参数
            Set<String> set = dataMap.keySet();
            List<Object>  objParams = new ArrayList<>();
             for(Iterator<String> it=set.iterator(); it.hasNext();){
                    String key = it.next();
                    Object value = dataMap.get(key);
                    objParams.add(value);
                    call.addParameter(key, org.apache.axis.encoding.XMLType.XSD_STRING,javax.xml.rpc.ParameterMode.IN);
               }
            call.setReturnType(XMLType.XSD_STRING);
            responseXML = (String) call.invoke(objParams.toArray());
        } catch (Exception e) {
            logger.error("WebService请求异常!原因: "+e.fillInStackTrace());
        }
        return responseXML;
    } 

三、xml转json

    /**
     * xml转json
     * @param xml
     * @param jsonType
     * @return
     */
    public static  String xmlToJSON(String xml,String charset) {  
        JSONObject obj = new JSONObject();  
        try {  
            InputStream is = new ByteArrayInputStream(xml.getBytes(charset));  
            SAXBuilder sb = new SAXBuilder();  
            Document doc = sb.build(is);  
            Element root = doc.getRootElement();  
            Map map=iterateElement(root);  
           obj.put(root.getName(),map);  
           return obj.toString();  
        } catch (Exception e) {  
            logger.error("xml转json异常!xml为:"+xml+"-------原因:"+e.fillInStackTrace());
            return null;
        }  
    }  

  private static Map  iterateElement(Element root) {
        List childrenList = root.getChildren();
        Element element = null;
        Map map = new HashMap();
        List list = null;
        for (int i = 0; i < childrenList.size(); i++) {
            list = new ArrayList();
            element = (Element) childrenList.get(i);
            if(element.getChildren().size()>0){
                if(root.getChildren(element.getName()).size()>1){
                    if (map.containsKey(element.getName())) {
                        list = (List) map.get(element.getName());
                    }
                    list.add(iterateElement(element));
                    map.put(element.getName(), list);
                }else{
                    map.put(element.getName(), iterateElement(element));
                }
            }else {
                if(root.getChildren(element.getName()).size()>1){
                    if (map.containsKey(element.getName())) {
                        list = (List) map.get(element.getName());
                    }
                    list.add(element.getTextTrim());
                    map.put(element.getName(), list);
                }else{
                    map.put(element.getName(), element.getTextTrim());
                }
            }
        }

        return map;
    }

猜你喜欢

转载自blog.csdn.net/yswKnight/article/details/82225895