Java用HttpClient3发送Get和Post请求(增强)

 

使用的是:HttpClient 3.1,这个比java自带的URLConnection稳定。

带字符编码设置,系统对应的换行。

Java代码   收藏代码
  1. import java.io.BufferedReader;  
  2. import java.io.IOException;  
  3. import java.io.InputStreamReader;  
  4. import java.util.HashMap;  
  5. import java.util.Map;  
  6.   
  7. import org.apache.commons.httpclient.HttpClient;  
  8. import org.apache.commons.httpclient.HttpMethod;  
  9. import org.apache.commons.httpclient.HttpStatus;  
  10. import org.apache.commons.httpclient.URIException;  
  11. import org.apache.commons.httpclient.methods.GetMethod;  
  12. import org.apache.commons.httpclient.methods.PostMethod;  
  13. import org.apache.commons.httpclient.params.HttpMethodParams;  
  14. import org.apache.commons.httpclient.util.URIUtil;  
  15. import org.apache.commons.lang.StringUtils;  
  16. import org.apache.commons.logging.Log;  
  17. import org.apache.commons.logging.LogFactory;  
  18.   
  19. /**  
  20. * HTTP工具类  
  21.  
  22. * @author happyqing 2015-4-20 
  23. */   
  24. public final class HttpUtil {   
  25.         private static Log log = LogFactory.getLog(HttpUtil.class);   
  26.   
  27.         /**  
  28.          * 执行一个HTTP GET请求,返回请求响应的HTML  
  29.          *  
  30.          * @param url                 请求的URL地址  
  31.          * @param queryString 请求的查询参数,可以为null  
  32.          * @param charset         字符集  
  33.          * @param pretty            是否美化  
  34.          * @return 返回请求响应的HTML  
  35.          */   
  36.         public static String doGet(String url, String queryString, String charset, boolean pretty) {   
  37.                 StringBuffer response = new StringBuffer();   
  38.                 HttpClient client = new HttpClient();   
  39.                 HttpMethod method = new GetMethod(url);   
  40.                 try {   
  41.                         if (StringUtils.isNotBlank(queryString))   
  42.                                 //对get请求参数做了http请求默认编码,好像没有任何问题,汉字编码后,就成为%式样的字符串   
  43.                                 method.setQueryString(URIUtil.encodeQuery(queryString));   
  44.                         client.executeMethod(method);   
  45.                         if (method.getStatusCode() == HttpStatus.SC_OK) {   
  46.                                 BufferedReader reader = new BufferedReader(new InputStreamReader(method.getResponseBodyAsStream(), charset));   
  47.                                 String line;   
  48.                                 while ((line = reader.readLine()) != null) {   
  49.                                         if (pretty)   
  50.                                                 response.append(line).append(System.getProperty("line.separator"));   
  51.                                         else   
  52.                                                 response.append(line);   
  53.                                 }   
  54.                                 reader.close();   
  55.                         }   
  56.                 } catch (URIException e) {   
  57.                         log.error("执行HTTP Get请求时,编码查询字符串“" + queryString + "”发生异常!", e);   
  58.                 } catch (IOException e) {   
  59.                         log.error("执行HTTP Get请求" + url + "时,发生异常!", e);   
  60.                 } finally {   
  61.                         method.releaseConnection();   
  62.                 }   
  63.                 return response.toString();   
  64.         }   
  65.   
  66.         /**  
  67.          * 执行一个HTTP POST请求,返回请求响应的HTML  
  68.          *  
  69.          * @param url         请求的URL地址  
  70.          * @param params    请求的查询参数,可以为null  
  71.          * @param charset 字符集  
  72.          * @param pretty    是否美化  
  73.          * @return 返回请求响应的HTML  
  74.          */   
  75.         public static String doPost(String url, Map<String, String> params, String charset, boolean pretty) {   
  76.                 StringBuffer response = new StringBuffer();   
  77.                 HttpClient client = new HttpClient();   
  78.                 PostMethod method = new PostMethod(url);   
  79.         //设置参数的字符集  
  80.         method.getParams().setParameter(HttpMethodParams.HTTP_CONTENT_CHARSET,charset);  
  81.                 //设置Http Post数据   
  82.                 if (params != null) {   
  83.                         //HttpMethodParams p = new HttpMethodParams();   
  84.                         for (Map.Entry<String, String> entry : params.entrySet()) {   
  85.                                 //p.setParameter(entry.getKey(), entry.getValue());  
  86.                                 method.setParameter(entry.getKey(), entry.getValue());  
  87.                         }   
  88.                         //method.setParams(p);   
  89.                 }   
  90.                 try {   
  91.                         client.executeMethod(method);   
  92.                         if (method.getStatusCode() == HttpStatus.SC_OK) {   
  93.                                 BufferedReader reader = new BufferedReader(new InputStreamReader(method.getResponseBodyAsStream(), charset));   
  94.                                 String line;   
  95.                                 while ((line = reader.readLine()) != null) {   
  96.                                         if (pretty)   
  97.                                                 response.append(line).append(System.getProperty("line.separator"));   
  98.                                         else   
  99.                                                 response.append(line);   
  100.                                 }   
  101.                                 reader.close();   
  102.                         }   
  103.                 } catch (IOException e) {   
  104.                         log.error("执行HTTP Post请求" + url + "时,发生异常!", e);   
  105.                 } finally {   
  106.                         method.releaseConnection();   
  107.                 }   
  108.                 return response.toString();   
  109.         }   
  110.   
  111.         public static void main(String[] args) {   
  112.                 String y = doGet("http://video.sina.com.cn/life/tips.html"null"GBK"true);  
  113.                 System.out.println(y);  
  114. //              Map params = new HashMap();  
  115. //              params.put("param1", "value1");  
  116. //              params.put("json", "{\"aa\":\"11\"}");  
  117. //                String j = doPost("http://localhost/uplat/manage/test.do?reqCode=add", params, "UTF-8", true);  
  118. //                System.out.println(j);  
  119.         }   
  120. }  
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.Map;

import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpMethod;
import org.apache.commons.httpclient.HttpStatus;
import org.apache.commons.httpclient.URIException;
import org.apache.commons.httpclient.methods.GetMethod;
import org.apache.commons.httpclient.methods.PostMethod;
import org.apache.commons.httpclient.params.HttpMethodParams;
import org.apache.commons.httpclient.util.URIUtil;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

/** 
* HTTP工具类 
* 
* @author happyqing 2015-4-20
*/ 
public final class HttpUtil { 
        private static Log log = LogFactory.getLog(HttpUtil.class); 

        /** 
         * 执行一个HTTP GET请求,返回请求响应的HTML 
         * 
         * @param url                 请求的URL地址 
         * @param queryString 请求的查询参数,可以为null 
         * @param charset         字符集 
         * @param pretty            是否美化 
         * @return 返回请求响应的HTML 
         */ 
        public static String doGet(String url, String queryString, String charset, boolean pretty) { 
                StringBuffer response = new StringBuffer(); 
                HttpClient client = new HttpClient(); 
                HttpMethod method = new GetMethod(url); 
                try { 
                        if (StringUtils.isNotBlank(queryString)) 
                                //对get请求参数做了http请求默认编码,好像没有任何问题,汉字编码后,就成为%式样的字符串 
                                method.setQueryString(URIUtil.encodeQuery(queryString)); 
                        client.executeMethod(method); 
                        if (method.getStatusCode() == HttpStatus.SC_OK) { 
                                BufferedReader reader = new BufferedReader(new InputStreamReader(method.getResponseBodyAsStream(), charset)); 
                                String line; 
                                while ((line = reader.readLine()) != null) { 
                                        if (pretty) 
                                                response.append(line).append(System.getProperty("line.separator")); 
                                        else 
                                                response.append(line); 
                                } 
                                reader.close(); 
                        } 
                } catch (URIException e) { 
                        log.error("执行HTTP Get请求时,编码查询字符串“" + queryString + "”发生异常!", e); 
                } catch (IOException e) { 
                        log.error("执行HTTP Get请求" + url + "时,发生异常!", e); 
                } finally { 
                        method.releaseConnection(); 
                } 
                return response.toString(); 
        } 

        /** 
         * 执行一个HTTP POST请求,返回请求响应的HTML 
         * 
         * @param url         请求的URL地址 
         * @param params    请求的查询参数,可以为null 
         * @param charset 字符集 
         * @param pretty    是否美化 
         * @return 返回请求响应的HTML 
         */ 
        public static String doPost(String url, Map<String, String> params, String charset, boolean pretty) { 
                StringBuffer response = new StringBuffer(); 
                HttpClient client = new HttpClient(); 
                PostMethod method = new PostMethod(url); 
		//设置参数的字符集
		method.getParams().setParameter(HttpMethodParams.HTTP_CONTENT_CHARSET,charset);
                //设置Http Post数据 
                if (params != null) { 
                        //HttpMethodParams p = new HttpMethodParams(); 
                        for (Map.Entry<String, String> entry : params.entrySet()) { 
                                //p.setParameter(entry.getKey(), entry.getValue());
                        		method.setParameter(entry.getKey(), entry.getValue());
                        } 
                        //method.setParams(p); 
                } 
                try { 
                        client.executeMethod(method); 
                        if (method.getStatusCode() == HttpStatus.SC_OK) { 
                                BufferedReader reader = new BufferedReader(new InputStreamReader(method.getResponseBodyAsStream(), charset)); 
                                String line; 
                                while ((line = reader.readLine()) != null) { 
                                        if (pretty) 
                                                response.append(line).append(System.getProperty("line.separator")); 
                                        else 
                                                response.append(line); 
                                } 
                                reader.close(); 
                        } 
                } catch (IOException e) { 
                        log.error("执行HTTP Post请求" + url + "时,发生异常!", e); 
                } finally { 
                        method.releaseConnection(); 
                } 
                return response.toString(); 
        } 

        public static void main(String[] args) { 
                String y = doGet("http://video.sina.com.cn/life/tips.html", null, "GBK", true);
                System.out.println(y);
//        		Map params = new HashMap();
//        		params.put("param1", "value1");
//        		params.put("json", "{\"aa\":\"11\"}");
//                String j = doPost("http://localhost/uplat/manage/test.do?reqCode=add", params, "UTF-8", true);
//                System.out.println(j);
        } 
}

 

参考:

http://lavasoft.blog.51cto.com/62575/175911/

 

Java用HttpClient3发送Https的Get和Post请求(增强)

http://happyqing.iteye.com/blog/2266742

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值