• DefaultHttpClient使用


    转自:http://username2.iteye.com/blog/1664995

     

      1 httpClient封装后使用,get和post方法

    Java代码  收藏代码
    1. package util;  
    2.   
    3. import java.io.BufferedReader;  
    4. import java.io.InputStream;  
    5. import java.io.InputStreamReader;  
    6. import java.util.ArrayList;  
    7. import java.util.Iterator;  
    8. import java.util.List;  
    9. import java.util.Map;  
    10.   
    11. import net.sf.json.JSONObject;  
    12.   
    13. import org.apache.http.HttpEntity;  
    14. import org.apache.http.HttpResponse;  
    15. import org.apache.http.NameValuePair;  
    16. import org.apache.http.client.HttpClient;  
    17. import org.apache.http.client.entity.UrlEncodedFormEntity;  
    18. import org.apache.http.client.methods.HttpPost;  
    19. import org.apache.http.entity.StringEntity;  
    20. import org.apache.http.impl.client.DefaultHttpClient;  
    21. import org.apache.http.message.BasicNameValuePair;  
    22. import org.apache.http.protocol.HTTP;  
    23.   
    24. /** 
    25.  * @Title:TestHttpClient 
    26.  * @Author Tony 
    27.  * @Date: 2014年6月21日 下午3:29:37 
    28.  * @Description:  httpClient使用,1 发送post请求   2 发送get请求  
    29.  *  
    30.  */  
    31. public class TestHttpClient {  
    32.   
    33.    
    34.     /** 
    35.     * @Title: methodPost  
    36.     * @Description: httpclient方法中post提交数据的使用  
    37.     * @param @return 
    38.     * @param @throws Exception    
    39.     * @return String     
    40.     * @throws 
    41.      */  
    42.     public static String methodPost() throws Exception {  
    43.         DefaultHttpClient httpclient = new DefaultHttpClient();  
    44.         // // 代理的设置  
    45.         // HttpHost proxy = new HttpHost("10.60.8.20", 8080);  
    46.         // httpclient.getParams().setParameter(ConnRoutePNames.DEFAULT_PROXY,  
    47.         // proxy);  
    48.   
    49.         // 目标地址  
    50.         HttpPost httppost = new HttpPost(  
    51.                 "http://localhost:8011/testServlet");  
    52.         System.out.println("请求: " + httppost.getRequestLine());  
    53.    
    54.         // post 参数 传递  
    55.         List<BasicNameValuePair> nvps = new ArrayList<BasicNameValuePair>();  
    56.         nvps.add(new BasicNameValuePair("content", "11111111")); // 参数  
    57.         nvps.add(new BasicNameValuePair("path", "D:/file")); // 参数  
    58.         nvps.add(new BasicNameValuePair("name", "8")); // 参数  
    59.         nvps.add(new BasicNameValuePair("age", "9")); // 参数  
    60.         nvps.add(new BasicNameValuePair("username", "wzt")); // 参数  
    61.   
    62.         httppost.setEntity(new UrlEncodedFormEntity(nvps, HTTP.UTF_8)); // 设置参数给Post  
    63.   
    64.         // 执行  
    65.         HttpResponse response = httpclient.execute(httppost);  
    66.         HttpEntity entity = response.getEntity();  
    67.         System.out.println(response.getStatusLine());  
    68.         if (entity != null) {  
    69.             System.out.println("Response content length: "  
    70.                     + entity.getContentLength());  
    71.         }  
    72.         // 显示结果  
    73.         BufferedReader reader = new BufferedReader(new InputStreamReader(  
    74.                 entity.getContent(), "UTF-8"));  
    75.   
    76.         String line = null;  
    77.         while ((line = reader.readLine()) != null) {  
    78.             System.out.println(line);  
    79.         }  
    80.         if (entity != null) {  
    81.             entity.consumeContent();  
    82.         }  
    83.         return null;  
    84.   
    85.     }  
    86.       
    87.     /** 
    88.     * @Title: methodGet  
    89.     * @Description:  以get方法提交数的使用  
    90.     * @param @return 
    91.     * @param @throws Exception    
    92.     * @return String     
    93.     * @throws 
    94.      */  
    95.     public static  String methodGet() throws  Exception {   
    96.            DefaultHttpClient httpclient = new DefaultHttpClient();     
    97. //               // 代理的设置     
    98. //                HttpHost proxy = new HttpHost("10.60.8.20", 8080);     
    99. //                httpclient.getParams().setParameter(ConnRoutePNames.DEFAULT_PROXY, proxy);     
    100.   
    101.   
    102.             // 目标地址     
    103.              HttpPost httpGet = new HttpPost("http://localhost:8011/testServlet");     
    104.                
    105.              // 构造最简单的字符串数据     
    106.               StringEntity reqEntity = new StringEntity("name=test&password=test");     
    107.              // 设置类型     
    108.               reqEntity.setContentType("application/x-www-form-urlencoded");     
    109.              // 设置请求的数据     
    110.               httpGet.setEntity(reqEntity);     
    111.             
    112.              // 执行     
    113.              HttpResponse response = httpclient.execute(httpGet);     
    114.              HttpEntity entity = response.getEntity();     
    115.              System.out.println(response.getStatusLine());     
    116.                
    117.             if (entity != null) {     
    118.                System.out.println("Response content length: " + entity.getContentLength());  //得到返回数据的长度    
    119.              }     
    120.              // 显示结果     
    121.              BufferedReader reader = new BufferedReader(new InputStreamReader(entity.getContent(), "UTF-8"));   
    122.                
    123.              String line = null;     
    124.             while ((line = reader.readLine()) != null) {     
    125.                  System.out.println(line);     
    126.              }     
    127.             if (entity != null) {     
    128.                   entity.consumeContent();     
    129.              }     
    130.             return null;   
    131.   
    132.         }   
    133.       
    134.     /** 
    135.      * 模拟url访问 从特定的url中获取json 
    136.      *  
    137.      * @param urlStr 
    138.      * @param params 
    139.      * @return json object ,or null if failed 
    140.      * 参数经过封装后传过来 ,提交为 post请求 
    141.      */  
    142.     private static JSONObject getJsonFromUrl(String urlStr,  
    143.             Map<String, String> params) {  
    144.         HttpClient httpClient = new DefaultHttpClient();  
    145.         HttpPost httpPost = new HttpPost(urlStr);  
    146.         JSONObject json = null;  
    147.         try {  
    148.             if (params != null) {  
    149.                 Iterator<String> keys = params.keySet().iterator();  
    150.                 List<NameValuePair> nvps = new ArrayList<NameValuePair>();  
    151.                 while (keys.hasNext()) {  
    152.                     String key = keys.next();  
    153.                     nvps.add(new BasicNameValuePair(key, params.get(key)));  
    154.                 }  
    155.                 httpPost.setEntity(new UrlEncodedFormEntity(nvps, HTTP.UTF_8));  
    156.             }  
    157.             HttpResponse response = httpClient.execute(httpPost);  
    158.             HttpEntity entity = response.getEntity();  
    159.             InputStream is = entity.getContent();  
    160.             byte[] bytes = new byte[256];  
    161.             StringBuffer sb = new StringBuffer();  
    162.             while (is.read(bytes) > 0) {  
    163.                 sb.append(new String(bytes));  
    164.                 bytes = new byte[256];  
    165.             }  
    166.             json = JSONObject.fromObject(sb.toString());  
    167.         } catch (Exception e) {  
    168.              e.printStackTrace();  
    169.         }  
    170.   
    171.         return json;  
    172.     }  
    173.       
    174.     /** 
    175.     * @Title: main  
    176.     * @Description: 测试类  
    177.     * @param @param args    
    178.     * @return void     
    179.     * @throws 
    180.      */  
    181.     public static void main(String[] args) {  
    182.         try {  
    183.             TestHttpClient.methodGet();  
    184. //          TestHttpClient.methodPost();  
    185.               
    186.         } catch (Exception e) {  
    187.             // TODO Auto-generated catch block  
    188.             e.printStackTrace();  
    189.         }  
    190.     }  
    191. }  

     

     2 后台接受数据的servlet 

     

    Java代码  收藏代码
    1. public class TestServlet extends HttpServlet {  
    2.     private static final long serialVersionUID = 1L;  
    3.          
    4.       
    5.     /** 
    6.      * @see HttpServlet#service(HttpServletRequest request, HttpServletResponse response) 
    7.      */  
    8.     protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {  
    9.         request.setCharacterEncoding( "utf-8");  
    10.         response.setContentType("text/html;charset=utf-8");  
    11.         response.setCharacterEncoding("utf-8");  
    12.           
    13.         String name = request.getParameter("name");  
    14.         System.out.println("name 变量数据: "+name);  
    15.     }  
    16. }  

     

     

     

     

  • 相关阅读:
    自动化测试用例设计实例
    day07 python2与python3 编码
    day06-2 数据结构
    遇到一个关于C#调用Microsoft.Office.Interop.Word实例化的一个问题
    关于C#调用matlab生成的dll的一些经验(亲测)
    javascript 检测浏览类型和版本
    图片自适应完美兼容IE8
    Java VS .NET:Java与.NET的特点对比
    【C#点滴记录】ASP.NET 使用C# 导出Word 和Excel
    关于现在IT行业从业者一些建议
  • 原文地址:https://www.cnblogs.com/wxmdevelop/p/4121330.html
Copyright © 2020-2023  润新知