Android发送GET和POST请求DEMO

来源:互联网 发布:linux 三个时间 编辑:程序博客网 时间:2024/05/21 09:11

(转自)http://blog.csdn.net/wingbin/article/details/8642887

4.0后网络访问必须单独起一个子线程访问,否则无法运行,这里有一个发送请求的工具类GetPostUtil

[java] view plaincopy
  1. public class GetPostUtil  
  2. {  
  3.     /** 
  4.      * 向指定URL发送GET方法的请求 
  5.      *  
  6.      * @param url 
  7.      *            发送请求的URL 
  8.      * @param params 
  9.      *            请求参数,请求参数应该是name1=value1&name2=value2的形式。 
  10.      * @return URL所代表远程资源的响应 
  11.      */  
  12.     public static String sendGet(String url, String params)  
  13.     {  
  14.         String result = "";  
  15.         BufferedReader in = null;  
  16.         try  
  17.         {  
  18.             String urlName = url + "?" + params;  
  19.             URL realUrl = new URL(urlName);  
  20.             // 打开和URL之间的连接  
  21.             URLConnection conn = realUrl.openConnection();  
  22.             // 设置通用的请求属性  
  23.             conn.setRequestProperty("accept""*/*");  
  24.             conn.setRequestProperty("connection""Keep-Alive");  
  25.             conn.setRequestProperty("user-agent",  
  26.                 "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)");  
  27.             // 建立实际的连接  
  28.             conn.connect();  
  29.             // 获取所有响应头字段  
  30.             Map<String, List<String>> map = conn.getHeaderFields();  
  31.             // 遍历所有的响应头字段  
  32.             for (String key : map.keySet())  
  33.             {  
  34.                 System.out.println(key + "--->" + map.get(key));  
  35.             }  
  36.             // 定义BufferedReader输入流来读取URL的响应  
  37.             in = new BufferedReader(  
  38.                 new InputStreamReader(conn.getInputStream()));  
  39.             String line;  
  40.             while ((line = in.readLine()) != null)  
  41.             {  
  42.                 result += "\n" + line;  
  43.             }  
  44.         }  
  45.         catch (Exception e)  
  46.         {  
  47.             System.out.println("发送GET请求出现异常!" + e);  
  48.             e.printStackTrace();  
  49.         }  
  50.         // 使用finally块来关闭输入流  
  51.         finally  
  52.         {  
  53.             try  
  54.             {  
  55.                 if (in != null)  
  56.                 {  
  57.                     in.close();  
  58.                 }  
  59.             }  
  60.             catch (IOException ex)  
  61.             {  
  62.                 ex.printStackTrace();  
  63.             }  
  64.         }  
  65.         return result;  
  66.     }  
  67.   
  68.     /**  
  69.      * 向指定URL发送POST方法的请求  
  70.      *   
  71.      * @param url  
  72.      *            发送请求的URL  
  73.      * @param params  
  74.      *            请求参数,请求参数应该是name1=value1&name2=value2的形式。  
  75.      * @return URL所代表远程资源的响应  
  76.      */  
  77.     public static String sendPost(String url, String params)  
  78.     {  
  79.         PrintWriter out = null;  
  80.         BufferedReader in = null;  
  81.         String result = "";  
  82.         try  
  83.         {  
  84.             URL realUrl = new URL(url);  
  85.             // 打开和URL之间的连接  
  86.             URLConnection conn = realUrl.openConnection();  
  87.             // 设置通用的请求属性  
  88.             conn.setRequestProperty("accept""*/*");  
  89.             conn.setRequestProperty("connection""Keep-Alive");  
  90.             conn.setRequestProperty("user-agent",  
  91.                 "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)");  
  92.             // 发送POST请求必须设置如下两行  
  93.             conn.setDoOutput(true);  
  94.             conn.setDoInput(true);  
  95.             // 获取URLConnection对象对应的输出流  
  96.             out = new PrintWriter(conn.getOutputStream());  
  97.             // 发送请求参数  
  98.             out.print(params);  
  99.             // flush输出流的缓冲  
  100.             out.flush();  
  101.             // 定义BufferedReader输入流来读取URL的响应  
  102.             in = new BufferedReader(  
  103.                 new InputStreamReader(conn.getInputStream()));  
  104.             String line;  
  105.             while ((line = in.readLine()) != null)  
  106.             {  
  107.                 result += "\n" + line;  
  108.             }  
  109.         }  
  110.         catch (Exception e)  
  111.         {  
  112.             System.out.println("发送POST请求出现异常!" + e);  
  113.             e.printStackTrace();  
  114.         }  
  115.         // 使用finally块来关闭输出流、输入流  
  116.         finally  
  117.         {  
  118.             try  
  119.             {  
  120.                 if (out != null)  
  121.                 {  
  122.                     out.close();  
  123.                 }  
  124.                 if (in != null)  
  125.                 {  
  126.                     in.close();  
  127.                 }  
  128.             }  
  129.             catch (IOException ex)  
  130.             {  
  131.                 ex.printStackTrace();  
  132.             }  
  133.         }  
  134.         return result;  
  135.     }  
  136. }