URL类获取XML

来源:互联网 发布:云计算的前世今生 编辑:程序博客网 时间:2024/05/29 17:24

 

  1. import java.io.BufferedReader;  
  2. import java.io.BufferedWriter;  
  3. import java.io.File;  
  4. import java.io.FileWriter;  
  5. import java.io.InputStream;  
  6. import java.io.InputStreamReader;  
  7. import java.io.OutputStream;  
  8. import java.io.OutputStreamWriter;  
  9. import java.net.HttpURLConnection;  
  10. import java.net.URL;  
  11.   
  12. import org.dom4j.Document;  
  13. import org.dom4j.DocumentException;  
  14. import org.dom4j.DocumentHelper;  
  15. import org.dom4j.io.OutputFormat;  
  16. import org.dom4j.io.XMLWriter;  
  17.   
  18. public class GetForeignXML {  
  19.     public static void main(String[] args) {  
  20.          proccessOper("<getprefixcountresp>   <msgtype>GetPrefixCountResp</msgtype>   <count>5392</count>   <hret>0</hret></getprefixcountresp>");  
  21.     }  
  22.   
  23.     public static String proccessOper(String xmlStr) {  
  24.         /**********************发送请求************************/  
  25.   
  26.         Document doc = null;  
  27.         try {  
  28.             doc = DocumentHelper.parseText(xmlStr);  
  29.         } catch (DocumentException e1) {  
  30.             // TODO Auto-generated catch block  
  31.             e1.printStackTrace();  
  32.         }  
  33.   
  34.         HttpURLConnection conn = null;  
  35.         StringBuffer sb = new StringBuffer();  
  36.         try   
  37.         {  
  38.             URL url = new URL("http://localhost:8082/RequestXML/servlet/ForeignServlet");  
  39.             conn = (HttpURLConnection) url.openConnection();  
  40.             conn.setDoOutput(true);  
  41.             conn.setUseCaches(false);  
  42.             conn.setDefaultUseCaches(false);  
  43.             conn.setRequestMethod("GET");  
  44.             conn.setRequestProperty("Accept""text/html");  
  45.             conn.setRequestProperty("Content-type""text/html");  
  46.             conn.setRequestProperty("connection""close");  
  47.             OutputStream out = conn.getOutputStream();  
  48.             BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(out));  
  49.   
  50.             OutputFormat format = OutputFormat.createPrettyPrint();  
  51.             format.setEncoding("GB2312"); //设置XML文档的编码类型  
  52.             format.setSuppressDeclaration(false);//设置是否打印文档头,即:<?xml version="1.0" encoding="GB2312"?>  
  53.             format.setIndent(true); //设置是否缩进  
  54.             format.setIndent("   "); //以空格方式实现缩进  
  55.             format.setNewlines(true); //设置是否换行  
  56.             format.setTrimText(true);//删除结点值的首尾空格  
  57.   
  58.             XMLWriter writer = new XMLWriter(bw, format);  
  59.             writer.write(doc);  
  60.             writer.flush();  
  61.             writer.close();  
  62.             bw.close();  
  63.             out.flush();  
  64.             out.close();  
  65.             /************************接收返回数据***************************/  
  66.             InputStream in = conn.getInputStream();  
  67.             BufferedReader br = new BufferedReader(new InputStreamReader(in));  
  68.   
  69.             char[] mychar = new char[100];  
  70.   
  71.             int len = 0;  
  72.             while ((len = br.read(mychar)) != -1) {  
  73.                 sb.append(new String(mychar));  
  74.                 mychar = new char[100];  
  75.             }  
  76.   
  77.             br.close();  
  78.             in.close();  
  79.   
  80.             /****将返回的数据写入XML文件****/  
  81.             FileWriter fw = new FileWriter(new File("c://MyXML.xml"));  
  82.             fw.write(sb.toString().trim());  
  83.             fw.flush();  
  84.             fw.close();  
  85.             System.out.println("$$$$$返回结果长度:" + sb.toString().trim().length());  
  86.   
  87.         } catch (Exception e) {  
  88.             e.printStackTrace();  
  89.         }  
  90.         return sb.toString().trim();  
  91.     }  
  92. }