org.apache.commons.httpclient.HttpClient的使用

来源:互联网 发布:淘宝设置满减 编辑:程序博客网 时间:2024/04/29 20:37
HTTP 协议可能是现在 Internet 上使用得最多、最重要的协议了,越来越多的 Java 应用程序需要直接通过 HTTP 协议来访问网络资源。虽然在 JDK 的 java net包中已经提供了访问 HTTP 协议的基本功能,但是对于大部分应用程序来说,JDK 库本身提供的功能还不够丰富和灵活。HttpClient 是 Apache Jakarta Common 下的子项目,用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新的版本和建议。HttpClient 已经应用在很多的项目中,比如 Apache Jakarta 上很著名的另外两个开源项目 Cactus 和HTMLUnit 都使用了 HttpClient。现在HttpClient最新版本为 HttpClient 4.5 (GA) (2015-09-11)

需要使用的jar包


使用步骤,思路

 1, 创建Http客户端对象
 2, 设置请求的url,连接的地址
 3, 设置请求的方式(Get/Post),请求内容的类型,接收内容的类型,字符编码
 4, 设置请求参数(请求内容)
 5, 按请求的方式执行请求,返回Http状态码
 6, 获得响应内容
 7, 释放连接


[java] view plain copy
  1. package com.httpclient1;  
  2.   
  3. import java.util.HashMap;  
  4. import java.util.Map;  
  5.   
  6. import org.apache.commons.httpclient.DefaultHttpMethodRetryHandler;  
  7. import org.apache.commons.httpclient.HttpClient;  
  8. import org.apache.commons.httpclient.NameValuePair;  
  9. import org.apache.commons.httpclient.URI;  
  10. import org.apache.commons.httpclient.methods.PostMethod;  
  11. import org.apache.commons.httpclient.params.HttpMethodParams;  
  12.   
  13. import com.google.gson.Gson;  
  14.   
  15.   
  16. /** 
  17.  * 用commons-httpclient-3.1 框架, 模拟客户端请求 
  18.  * @since 2016-4-11 
  19.  * @version 1.0 
  20.  */  
  21. public class Client {  
  22.   
  23.     public static void main(String[] args) {          
  24.         String serviceUrl = "http://localhost:8080/MbtForSpring/test/demo/serviceOne.do";  
  25.           
  26.         Map<String, Object> parames = new HashMap<String, Object>();  
  27.         Gson gson = new Gson();  
  28.         String json = null;  
  29.         try {  
  30.             parames.put("AppKey""132152");  
  31.             parames.put("Ticket""57077c8537");  
  32.   
  33.             json = gson.toJson(parames);  
  34.   
  35.             System.out.println("json:" + json);  
  36.               
  37.             String str = doPost(serviceUrl, json);  
  38.             System.out.println(str);  
  39.         } catch (Exception e) {  
  40.             e.printStackTrace();  
  41.         }         
  42.     }  
  43.       
  44.     /** 
  45.      *  
  46.      * @param strUrl 
  47.      * @param postString 
  48.      * @return 
  49.      * String 
  50.      */  
  51.     @SuppressWarnings("deprecation")  
  52.     public static String doPost(String strUrl, String postString) {  
  53.         String receive = null;  
  54.           
  55.         // 请求发布在本地 Tomcat上服务  
  56.         PostMethod method = new PostMethod(strUrl);  
  57. //      PostMethod method = new PostMethod();  
  58.         try {  
  59.             HttpClient client = new HttpClient();  
  60. //          client.getHostConfiguration().setHost(new HttpHost());  
  61.               
  62.             //请求 网络上的服务, 用这种方式请求本地,返回一个Html页面  
  63. //          client.getHostConfiguration().setHost(new URI(strUrl));  
  64.               
  65.             method.setRequestHeader("Content-type""application/json; charset=UTF-8");  
  66.             method.setRequestHeader("Accept""application/json; charset=UTF-8");  
  67.             // 设置为默认的重试策略  
  68.             method.getParams().setParameter(HttpMethodParams.RETRY_HANDLER, new DefaultHttpMethodRetryHandler());  
  69.               
  70.             // 4, 设置请求参数(请求内容)  
  71. /*          NameValuePair pair1 = new NameValuePair("key", "value"); 
  72.             NameValuePair pair2 = new NameValuePair("key", "value"); 
  73.             method.setRequestBody(new NameValuePair[]{pair1, pair2} );*/  
  74.   
  75.             method.setRequestBody(postString);  
  76.             int rspCode = client.executeMethod(method);  
  77.             //  
  78.             System.out.println("rspCode:" + rspCode);  
  79.             receive = method.getResponseBodyAsString();  
  80.             System.out.println("receive:" + receive);  
  81.             return receive;  
  82.         } catch (Exception e) {  
  83.             e.printStackTrace();  
  84.         } finally {  
  85.             method.releaseConnection();  
  86.         }  
  87.         return receive;  
  88.     }  

阅读全文
0 0
原创粉丝点击