Java Post 请求Webservice 返回XML

来源:互联网 发布:网络上传速度慢怎么办 编辑:程序博客网 时间:2024/05/22 05:18
package legacy.servlet;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.StringReader;
import java.net.URL;
import java.net.URLConnection;
import java.util.List;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;

import org.jdom.input.SAXBuilder;

import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.JDOMException;
import org.jdom.Namespace;
import org.jdom.input.SAXBuilder;
import org.xml.sax.InputSource;


public class PostTest {
    public static void testPost() throws IOException {  
        URL url = new URL("http://w3.ospf.cn.ibm.com:10000/PACServiceWeb/services/QuarterlyRevalidationService");        
        URLConnection connection = url.openConnection();
        connection.setDoOutput(true);
        connection.setRequestProperty("Content-Type", "text/xml");
        connection.setRequestProperty("SOAPAction", "getReportsBriefInfo");
        connection.setRequestProperty("Accept-Encoding", "gzip,deflate");
        connection.setRequestProperty("Host", " w3.ospf.cn.ibm.com:10000");
        connection.setRequestProperty("Content-Length", "242");
    
        OutputStreamWriter out = new OutputStreamWriter(connection  
                .getOutputStream(), "UTF-8");  
        StringBuffer sb = new StringBuffer();
        sb.append("<soapenv:Envelope xmlns:soapenv="+" 'http://schemas.xmlsoap.org/soap/envelope/' "+
                                    " xmlns:impl="+" 'http://impl.service.pac.cdl.ibm.com ' >");
        sb.append("<soapenv:Header/>");
        sb.append("<soapenv:Body>");
        sb.append(" <impl:getReportsBriefInfo/>");
        sb.append("</soapenv:Body>");
        sb.append("</soapenv:Envelope>");
        out.write(sb.toString());  
          
        out.flush();  
        out.close();
       
        //response
        String sCurrentLine;  
        String sTotalString;  
        sCurrentLine = "";  
        sTotalString = "";  
        InputStream l_urlStream;  
        l_urlStream = connection.getInputStream();
        BufferedReader l_reader = new BufferedReader(new InputStreamReader(  
                l_urlStream));  
        while ((sCurrentLine = l_reader.readLine()) != null) {  
              sTotalString += sCurrentLine + "\r\n";  
            //parseXML     
            
        }  
            System.out.println(sTotalString);  
            StringReader read = new StringReader(sTotalString);
            InputSource source = new InputSource(read);
            SAXBuilder saxb= new SAXBuilder();
            Document doc;
            try {
                doc = (Document) saxb.build(source);
                Element root = doc.getRootElement();
//                System.out.println(root.getName());//输出根元素的名称(测试)
              
                //得到根元素所有子元素的集合
                List Root_child = root.getChildren();
                Element et = null;

                et = (Element) Root_child.get(1);//getbody
                List Body_child = et.getChildren();//body childList
                et = (Element) Body_child.get(0);//getReportsBriefInfoResponse
                List GetReportsBriefInfoResponse_child = et.getChildren();
                et = (Element) GetReportsBriefInfoResponse_child.get(0);//getReportsBriefInfoReturn
                List ReportVBeanlList = et.getChildren();//reportVBean List
                et = (Element) ReportVBeanlList.get(0);//get the element of ReportVBean
                
               
                for(int j = 0;j<ReportVBeanlList.size();j++){
                     et = (Element) ReportVBeanlList.get(j);
                     List ReportVBean_child = et.getChildren();
                     System.out.println(et);
                     System.out.println("dueDateForMgr:  "+((Element) ReportVBean_child.get(0)).getText());
                     System.out.println( "reportDate:  "+((Element) ReportVBean_child.get(1)).getText());      
                    
                }
                 
            } catch (JDOMException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
        }
    }
    public static void main(String[] args) throws IOException {  
      testPost();  
    }  
}


原创粉丝点击