zoukankan      html  css  js  c++  java
  • 用JAVA发送一个XML格式的HTTP请求

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