• java--->读取wsdl方法(二)


    方法1:在简单的使用后面:

    package com.cai.test;
    
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.io.OutputStream;
    import java.io.StringReader;
    import java.net.HttpURLConnection;
    import java.net.URL;
    
    import javax.xml.parsers.DocumentBuilder;
    import javax.xml.parsers.DocumentBuilderFactory;
    
    import org.w3c.dom.Document;
    import org.w3c.dom.Node;
    import org.xml.sax.InputSource;
    
    public class ServiceTest2 {
    
        public static void main(String[] args)throws Exception {
            getResult("李涛", "getValue");
    
        }
        /**
         * 
         * @param condition 参数(值)
         * @param methodName 方法名称
         * @param iMethodArgsName 参数(名称)
         * @return
         */
        public static String setRequestSoapMsg(String condition, String methodName,
                String iMethodArgsName){
            String soapMsg="<?xml version="1.0" encoding="UTF-8"?>" +
                    "<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas." +
                    "xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http:" +
                    "//schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http" +
                    "://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http:" +
                    "//www.w3.org/2001/XMLSchema">"+
                "<SOAP-ENV:Body>"+
                    "<m:"+methodName+" xmlns:m="http://test.cs.com/">" +  //http://test.cs.com  ==》wsdl 种对应的namespace
                        "<"+iMethodArgsName+">"+ condition+"</"+iMethodArgsName+">" +
                    "</m:"+methodName+">" +
                "</SOAP-ENV:Body>"+
                "</SOAP-ENV:Envelope>";
            System.out.println("soapMsg:"+soapMsg);
            return soapMsg;
        }
        public static String getResult(String condition, String methodName)
            throws Exception {
            String soapMsg = setRequestSoapMsg(
                    condition,methodName,"condition");
            URL u = null;
            HttpURLConnection conn = null;
            OutputStream out = null;
            InputStream in = null;
            InputStreamReader isr = null;
            StringBuffer sb = new StringBuffer();
            try {
                u = new URL("http://localhost:8080/testService/sfws/testService?wsdl");             
                conn = (HttpURLConnection)u.openConnection();
                conn.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; QQPinyin 689; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0)");
                conn.setRequestProperty("Content-Type", "text/xml; charset=utf-8");
                conn.setRequestMethod("POST");
                conn.setDoOutput(true);
                conn.setDoInput(true);
                conn.setConnectTimeout(60*1000);
                conn.setReadTimeout(60*1000);
                out = conn.getOutputStream();
                out.write(soapMsg.getBytes("utf-8"));        
                if(conn.getResponseCode()==200){
                    in = conn.getInputStream();
                    isr = new InputStreamReader(in,"utf-8");
                    char[] c = new char[1024];
                    int a = isr.read(c);
                    while(a!=-1){
                        sb.append(new String(c,0,a));
                        a = isr.read(c);
                    }
                }
            }  catch (Exception e){
                throw e;
            } finally{
                if(conn!=null){
                    conn.disconnect();
                }
                try {
                    if(in!=null){
                        in.close();
                    }
                    if(isr!=null){
                        isr.close();
                    }
                    if(out!=null){
                        out.close();
                    }
                } catch (IOException e) {
                    throw e;
                }
            }
            Document doc = getDocFromXml(sb.toString());
            String result = getValueByTagName(doc, "return", 0);//result==>@WebResult(name = "result")(如果没有注解是 return)
            System.out.println("result:"+result);
            
            return result;
        }
        
        /**
         * xml 转 Document对象
         * @param xml
         * @return Document
         * @throws Exception
         */
        public static Document getDocFromXml(String xml) throws Exception{
            DocumentBuilderFactory domfac = DocumentBuilderFactory.newInstance();
            DocumentBuilder dombuilder = domfac.newDocumentBuilder();
            StringReader sr=new StringReader(xml);
            InputSource is=new InputSource(sr);
            Document doc = dombuilder.parse(is);
            return doc;
        }
        /**
         * 
         * @param doc  xml
         * @param tagName  标签名
         * @param itemIndex 第几个
         * @return
         */
        public static String getValueByTagName(Document doc,String tagName, int itemIndex){
            String value = "";
            if(doc != null && tagName != null && !"".equals(tagName)){
                Node node = doc.getElementsByTagName(tagName).item(itemIndex);
                if(node != null)
                    value = node.getTextContent().trim();
            }
            return value;
        }
    
    }
  • 相关阅读:
    必知必会 | Android 性能优化的方面方面都在这儿
    上周热点回顾(1.19-1.25)团队
    上周热点回顾(1.12-1.18)团队
    如何在博客园的markdown编辑器中输入数学公式团队
    上周热点回顾(1.5-1.11)团队
    上周热点回顾(12.29-1.4)团队
    上周热点回顾(12.22-12.28)团队
    云计算之路-阿里云上-寒流来袭:2014年12月23日21:45-23:15网站故障团队
    上周热点回顾(12.15-12.21)团队
    【活动】加班一整年了,程序员们,你们还好吗?团队
  • 原文地址:https://www.cnblogs.com/cai170221/p/13644382.html
Copyright © 2020-2023  润新知