zoukankan      html  css  js  c++  java
  • 对于java用发送http请求,请求内容为xml格式

    1.   
    2. import java.io.BufferedInputStream;  
    3. import java.io.BufferedReader;  
    4. import java.io.ByteArrayOutputStream;  
    5. import java.io.IOException;  
    6. import java.io.InputStream;  
    7. import java.io.InputStreamReader;  
    8. import java.io.OutputStreamWriter;  
    9. import java.net.URI;  
    10. import java.net.URL;  
    11. import java.net.URLConnection;  
    12.   
    13. import org.apache.commons.httpclient.HttpClient;  
    14. import org.apache.commons.httpclient.HttpStatus;  
    15. import org.apache.commons.httpclient.methods.PostMethod;  
    16.   
    17. /** 
    18.  * 测试调用一些meeting第三方接口 
    19.  * @author Jack.Song 
    20.  */  
    21. public class TestMeetingInterface {  
    22.   
    23.     /** 
    24.      * @param args 
    25.      */  
    26.     public static void main(String[] args) {  
    27.           
    28.         String url = "http://192.168.0.68/integration/xml";  
    29.         TestMeetingInterface tmi = new TestMeetingInterface();  
    30.         System.out.println(tmi.post(url,"listSummaryMeeting.xml"));  
    31.           
    32.         /*//判断当前系统是否支持Java AWT Desktop扩展 
    33.         if(java.awt.Desktop.isDesktopSupported()){ 
    34.             try { 
    35.                 URI path = tmi.getClass().getResource("/listSummaryMeeting.xml").toURI(); 
    36.                 System.out.println(path); 
    37.                 //创建一个URI实例 
    38. //              java.net.URI uri = java.net.URI.create(path);  
    39.                 //获取当前系统桌面扩展 
    40.                 java.awt.Desktop dp = java.awt.Desktop.getDesktop(); 
    41.                 //判断系统桌面是否支持要执行的功能 
    42.                 if(dp.isSupported(java.awt.Desktop.Action.BROWSE)){ 
    43.                     //获取系统默认浏览器打开链接 
    44.                     dp.browse(path);     
    45.                 } 
    46.             } catch (Exception e) { 
    47.                 e.printStackTrace(); 
    48.             }              
    49.         }*/  
    50.     }  
    51.       
    52.       
    53.   
    54.     /**  
    55.      * 发送xml数据请求到server端  
    56.      * @param url xml请求数据地址  
    57.      * @param xmlString 发送的xml数据流  
    58.      * @return null发送失败,否则返回响应内容  
    59.      */    
    60.     public String post(String url,String xmlFileName){    
    61.         //关闭   
    62.         System.setProperty("org.apache.commons.logging.Log""org.apache.commons.logging.impl.SimpleLog");     
    63.         System.setProperty("org.apache.commons.logging.simplelog.showdatetime""true");     
    64.         System.setProperty("org.apache.commons.logging.simplelog.log.org.apache.commons.httpclient""stdout");    
    65.           
    66.         //创建httpclient工具对象   
    67.         HttpClient client = new HttpClient();    
    68.         //创建post请求方法   
    69.         PostMethod myPost = new PostMethod(url);    
    70.         //设置请求超时时间   
    71.         client.setConnectionTimeout(300*1000);  
    72.         String responseString = null;    
    73.         try{    
    74.             //设置请求头部类型   
    75.             myPost.setRequestHeader("Content-Type","text/xml");  
    76.             myPost.setRequestHeader("charset","utf-8");  
    77.               
    78.             //设置请求体,即xml文本内容,注:这里写了两种方式,一种是直接获取xml内容字符串,一种是读取xml文件以流的形式   
    79. //          myPost.setRequestBody(xmlString);   
    80.               
    81.             InputStream body=this.getClass().getResourceAsStream("/"+xmlFileName);  
    82.             myPost.setRequestBody(body);  
    83. //            myPost.setRequestEntity(new StringRequestEntity(xmlString,"text/xml","utf-8"));     
    84.             int statusCode = client.executeMethod(myPost);    
    85.             if(statusCode == HttpStatus.SC_OK){    
    86.                 BufferedInputStream bis = new BufferedInputStream(myPost.getResponseBodyAsStream());    
    87.                 byte[] bytes = new byte[1024];    
    88.                 ByteArrayOutputStream bos = new ByteArrayOutputStream();    
    89.                 int count = 0;    
    90.                 while((count = bis.read(bytes))!= -1){    
    91.                     bos.write(bytes, 0, count);    
    92.                 }    
    93.                 byte[] strByte = bos.toByteArray();    
    94.                 responseString = new String(strByte,0,strByte.length,"utf-8");    
    95.                 bos.close();    
    96.                 bis.close();    
    97.             }    
    98.         }catch (Exception e) {    
    99.             e.printStackTrace();    
    100.         }    
    101.         myPost.releaseConnection();    
    102.         return responseString;    
    103.     }    
    104.       
    105.     /** 
    106.      * 用传统的URI类进行请求 
    107.      * @param urlStr 
    108.      */  
    109.     public void testPost(String urlStr) {  
    110.         try {  
    111.             URL url = new URL(urlStr);  
    112.             URLConnection con = url.openConnection();  
    113.             con.setDoOutput(true);  
    114.             con.setRequestProperty("Pragma:""no-cache");  
    115.             con.setRequestProperty("Cache-Control""no-cache");  
    116.             con.setRequestProperty("Content-Type""text/xml");  
    117.   
    118.             OutputStreamWriter out = new OutputStreamWriter(con.getOutputStream());      
    119.             String xmlInfo = getXmlInfo();  
    120.             System.out.println("urlStr=" + urlStr);  
    121. //            System.out.println("xmlInfo=" + xmlInfo);   
    122.             out.write(new String(xmlInfo.getBytes("UTF-8")));  
    123.             out.flush();  
    124.             out.close();  
    125.             BufferedReader br = new BufferedReader(new InputStreamReader(con  
    126.                     .getInputStream()));  
    127.             String line = "";  
    128.             for (line = br.readLine(); line != null; line = br.readLine()) {  
    129.                 System.out.println(line);  
    130.             }  
    131.         } catch (Exception e) {  
    132.             e.printStackTrace();  
    133.         }  
    134.     }  
    135.   
    136.     private String getXmlInfo() {  
    137.         StringBuilder sb = new StringBuilder();  
    138.         sb.append("<?xml version='1.0' encoding='UTF-8'?>");  
    139.         sb.append("<Message>");  
    140.         sb.append(" <header>");  
    141.         sb.append("     <action>readMeetingStatus</action>");  
    142.         sb.append("     <service>meeting</service>");  
    143.         sb.append("     <type>xml</type>");  
    144.         sb.append("     <userName>admin</userName>");  
    145.         sb.append("     <password>admin</password>");  
    146.         sb.append("     <siteName>box</siteName>");  
    147.         sb.append(" </header>");  
    148.         sb.append(" <body>");  
    149.         sb.append("     <confKey>43283344</confKey>");  
    150.         sb.append(" </body>");  
    151.         sb.append("</Message>");  
    152.           
    153.         return sb.toString();  
    154.     }  
    155. }  
  • 相关阅读:
    Kafka架构
    MapReduce执行流程解析
    ZooKeeper选举机制
    Zookeeper全局一致性
    HDFS的快照
    在CentOS 6.5上安装NodeJS
    Node v0.12.5 稳定版发布
    CentOS6.5手动升级gcc4.8.2
    centos6 yum 安装 install c++4.8 gcc4.8
    Linux CentOS6系统安装最新版本Node.js环境及相关文件配置
  • 原文地址:https://www.cnblogs.com/snake-hand/p/3157344.html
Copyright © 2011-2022 走看看