`

用httpclient4.x 发送http get post请求 中文编码问题

阅读更多
  1. <pre name="code" class="java">package org.ibmp.gmp.util;  
  2.   
  3. import java.io.IOException;  
  4. import java.io.UnsupportedEncodingException;  
  5. import java.net.URI;  
  6. import java.net.URISyntaxException;  
  7. import java.net.URLEncoder;  
  8. import java.text.SimpleDateFormat;  
  9. import java.util.ArrayList;  
  10. import java.util.Date;  
  11. import java.util.List;  
  12.   
  13. import org.apache.http.HttpEntity;  
  14. import org.apache.http.HttpResponse;  
  15. import org.apache.http.NameValuePair;  
  16. import org.apache.http.ParseException;  
  17. import org.apache.http.client.ClientProtocolException;  
  18. import org.apache.http.client.HttpClient;  
  19. import org.apache.http.client.entity.UrlEncodedFormEntity;  
  20. import org.apache.http.client.methods.HttpGet;  
  21. import org.apache.http.client.methods.HttpPost;  
  22. import org.apache.http.entity.StringEntity;  
  23. import org.apache.http.impl.client.DefaultHttpClient;  
  24. import org.apache.http.message.BasicNameValuePair;  
  25. import org.apache.http.protocol.HTTP;  
  26. import org.apache.http.util.EntityUtils;  
  27.   
  28. public class HttpClientUtil {  
  29.   
  30.     private static HttpClient httpClient = new DefaultHttpClient();  
  31.   
  32.     /**  
  33.      * 发送Get请求  
  34.      * @param url  
  35.      * @param params  
  36.      * @return  
  37.      */  
  38.     public static String get(String url, List<NameValuePair> params) {  
  39.         String body = null;  
  40.         try {  
  41.             // Get请求  
  42.             HttpGet httpget = new HttpGet(url);  
  43.             // 设置参数  
  44.             String str = EntityUtils.toString(new UrlEncodedFormEntity(params));  
  45.             httpget.setURI(new URI(httpget.getURI().toString() + "?" + str));  
  46.             // 发送请求  
  47.             HttpResponse httpresponse = httpClient.execute(httpget);  
  48.             // 获取返回数据  
  49.             HttpEntity entity = httpresponse.getEntity();  
  50.             body = EntityUtils.toString(entity);  
  51.             if (entity != null) {  
  52.                 entity.consumeContent();  
  53.             }  
  54.         } catch (ParseException e) {  
  55.             e.printStackTrace();  
  56.         } catch (UnsupportedEncodingException e) {  
  57.             e.printStackTrace();  
  58.         } catch (IOException e) {  
  59.             e.printStackTrace();  
  60.         } catch (URISyntaxException e) {  
  61.             e.printStackTrace();  
  62.         }  
  63.         return body;  
  64.     }  
  65.   
  66.     /**  
  67.      * 发送 Post请求  
  68.      * @param url  
  69.      * @param reqXml  
  70.      * @return  
  71.      */  
  72.     public static String post(String url, String reqXml) {  
  73.         String body = null;  
  74.         try {  
  75.             //设置客户端编码  
  76.             if (httpClient == null) {  
  77.                 // Create HttpClient Object  
  78.                 httpClient = new DefaultHttpClient();  
  79.                 }  
  80.             httpClient.getParams().setParameter("http.protocol.content-charset",HTTP.UTF_8);  
  81.             httpClient.getParams().setParameter(HTTP.CONTENT_ENCODING, HTTP.UTF_8);  
  82.             httpClient.getParams().setParameter(HTTP.CHARSET_PARAM, HTTP.UTF_8);  
  83.             httpClient.getParams().setParameter(HTTP.DEFAULT_PROTOCOL_CHARSET,HTTP.UTF_8);  
  84.             // Post请求  
  85.             HttpPost httppost = new HttpPost(url);  
  86.             //设置post编码  
  87.             httppost.getParams().setParameter("http.protocol.content-charset",HTTP.UTF_8);  
  88.             httppost.getParams().setParameter(HTTP.CONTENT_ENCODING, HTTP.UTF_8);  
  89.             httppost.getParams().setParameter(HTTP.CHARSET_PARAM, HTTP.UTF_8);  
  90.             httppost.getParams().setParameter(HTTP.DEFAULT_PROTOCOL_CHARSET, HTTP.UTF_8);  
  91.       
  92.             // 设置参数  
  93.              List<NameValuePair> params = new ArrayList<NameValuePair>();  
  94.              params.add(new BasicNameValuePair("$xmldata", reqXml));  
  95.              httppost.setEntity(new UrlEncodedFormEntity(params, HTTP.UTF_8));   
  96. //          StringEntity entity1 = new StringEntity(getUTF8XMLString(reqXml), "UTF-8");  
  97. //          entity1.setContentType("text/xml;charset=UTF-8");  
  98. //          entity1.setContentEncoding("UTF-8");  
  99. //          httppost.setEntity(entity1);  
  100.             //设置报文头  
  101.             httppost.setHeader("Content-Type", "text/xml;charset=UTF-8");  
  102.             // 发送请求  
  103.             HttpResponse httpresponse = httpClient.execute(httppost);  
  104.             // 获取返回数据  
  105.             HttpEntity entity = httpresponse.getEntity();  
  106.             body = EntityUtils.toString(entity);  
  107.             if (entity != null) {  
  108.                 entity.consumeContent();  
  109.             }  
  110.         } catch (UnsupportedEncodingException e) {  
  111.             e.printStackTrace();  
  112.         } catch (ClientProtocolException e) {  
  113.             e.printStackTrace();  
  114.         } catch (ParseException e) {  
  115.             e.printStackTrace();  
  116.         } catch (IOException e) {  
  117.             e.printStackTrace();  
  118.         }  
  119.         return body;  
  120.     }  
  121.     /**  
  122.      * 根据样式格式化时间  
  123.      * "yyyyMMdd"  
  124.      * "yyyyMMddHHmmss"  
  125.      * "yyyyMMddHHmmssssssss"  
  126.      * @param dateFormat  
  127.      * @return  
  128.      */  
  129.     public static String getnowDate(String dateFormat)  
  130.     {  
  131.         SimpleDateFormat sdf = new SimpleDateFormat(dateFormat);   
  132.         return sdf.format(new Date());  
  133.     }  
  134.   
  135. }
分享到:
评论

相关推荐

    java HttpClient 发送GET请求和带有表单参数的POST请求教程例子

    ### Java HttpClient 发送GET请求和带有表单参数的POST请求详解 #### 一、概述 在Java编程中,处理HTTP请求是一项常见的需求,特别是在与Web服务进行交互时。Apache HttpClient库提供了一种强大的方法来执行HTTP...

    HttpClient实现POST GET和文件下载

    接下来,我们将分别讲解HttpClient如何实现GET和POST请求: 1. GET请求: 使用HttpGet类创建GET请求,指定目标URL。例如: ```java HttpGet httpGet = new HttpGet("http://example.com"); CloseableHttpClient...

    http请求工具类HttpClientUtil,get,post请求(csdn)————程序.pdf

    HttpClientUtil 是一个用于发送 HTTP 请求的工具类,主要支持 GET 和 POST 方法。它使用了 Apache HttpClient 库,这是一个强大的 Java 客户端编程工具包,用于处理 HTTP 协议。以下是对类中关键方法和概念的详细...

    httpclient发送get请求和post请求demo

    本文将深入探讨如何使用HttpClient进行GET和POST请求,并提供相关的代码示例。 首先,GET请求是最常见的HTTP请求类型,通常用于获取资源。在HttpClient中,发送GET请求可以通过`HttpGet`类实现。以下是一个简单的...

    HttpClient发送http请求(post+get)需要的jar包+内符java代码案例+注解详解

    以下是一个使用HttpClient发送POST请求的Java代码示例: ```java import org.apache.http.HttpEntity; import org.apache.http.NameValuePair; import org.apache.http.client.entity.UrlEncodedFormEntity; import...

    httpclient4.3.x及其依赖jar包

    2. **构建HttpGet/HttpPost等请求对象**:设置URL、方法、请求头和实体内容。 3. **执行请求**:调用HttpClient的execute方法发送请求。 4. **处理响应**:获取HttpResponse,并解析其状态码、头部和主体。 5. **...

    MFC的HttpClient的Get和Post方法

    以下是使用HttpClient发送GET和POST请求的基本步骤: 1. 引入头文件:在代码中包含必要的头文件,如`#include &lt;wininet.h&gt;`。注意,为了使用这些API,需要链接到`Wininet.lib`库。 2. 初始化Internet会话:调用`...

    httpclient-4.5.2.jar.zip

    - **构建HttpGet/HttpPost请求**:通过`HttpGet`或`HttpPost`构造HTTP请求,设置URL、方法和请求头。 - **添加请求体**:对于POST请求,可以使用`EntityEnclosingRequestBase`子类如`HttpPost`,并通过`setEntity...

    HttpClient所需jar包(全) httpClient.4.13jar

    它为开发者提供了强大的功能,包括但不限于发起GET、POST等HTTP方法的请求,处理响应,管理连接池,以及支持HTTPS和其他高级特性。HttpClient 4.13版本是这个库的一个较新版本,包含了一系列的改进和修复。 在Java...

    后台模拟发送GET和POST请求

    本文将深入探讨如何利用Java的HttpClient库在后台模拟发送GET和POST请求,以及如何处理中文乱码问题。 首先,我们来理解GET和POST两种请求方法。GET请求通常用于获取服务器上的资源,它将参数附加到URL中,具有可...

    c# http协议,实现get或post发送请求 并返回内容

    以下是如何使用HttpClient发送GET和POST请求的示例: **GET请求示例:** ```csharp using System.Net.Http; using System.Threading.Tasks; public async Task&lt;string&gt; SendHttpGetRequest(string url) { using ...

    Java中Httpclient需要的jar包(httpclient.jar,httpcore.jar及commons-logging.jar)

    以下是一个简单的示例,展示如何使用HttpClient发送一个GET请求: ```java import org.apache.http.HttpResponse; import org.apache.http.client.HttpClient; import org.apache.http.client.methods.HttpGet; ...

    httpClient组合包.zip

    在POST请求中,使用HttpPost对象来指定请求URL,然后可以通过HttpEntityEnclosingRequestBase类的setEntity()方法添加请求实体,这个实体可以是简单的文本,也可以是通过httpmime库构建的MultipartEntity,用于上传...

    org.apache.commons.httpclient-3.1.jar

    《Apache Commons HttpClient 3.1:HTTP客户端编程的基石》 ...然而,需要注意的是,HttpClient 3.1已不再维护,最新的稳定版本为HttpClient 4.x,对于新项目建议使用更现代的版本以获取更好的性能和兼容性。

    解决了中文乱码的http的get和post请求demo

    本篇将详细讲解如何处理中文乱码问题,特别是在HTTP的GET和POST请求中。参考文档来源于CSDN博主的文章,我们将围绕这个主题进行深入探讨。 首先,我们需要理解中文乱码问题产生的原因。当HTTP请求发送含有中文字符...

    httpclient.post例子

    本示例将深入探讨如何使用HttpClient库实现POST请求。首先,我们需要理解POST请求的基本概念,它通常用于向服务器发送数据,比如提交表单或者上传文件。 在`httpclient.jar`包中,主要涉及`org.apache.http.client`...

    Http(get)请求数据Android Studio使用HttpClient

    在Android Studio中,虽然从API 23开始官方不再推荐使用`HttpClient`,因为它已被弃用,但仍有开发者因为其易用性和灵活性选择继续使用。 ## 2. 添加HttpClient依赖 由于Android Studio默认不再包含`HttpClient`,...

    httpclient发送post请求

    本示例中,我们将深入探讨如何使用`HttpClient`发送POST请求。 首先,我们需要导入必要的库。Apache HttpClient库提供了`HttpClient`和相关类,如`HttpPost`,`NameValuePair`等。在你的代码中,确保已经引入了以下...

    commons-httpclient3.1.jar,commons-codec1.3.jar,commons-logging1.1.1.jar

    HttpClient 3.1是该库的一个旧版本,尽管现在已经被更新的HttpClient 4.x系列取代,但在很多老项目中仍然广泛使用。它允许开发者构建复杂的HTTP请求,比如POST、GET、PUT等,并可以处理各种HTTP响应。 2. **Apache ...

    httpclient.jar4.4及4.5版本和httpcore.jar和commons-logging.jar.rar

    最后,使用HttpClient的execute方法发送请求,并获取HttpResponse对象以处理响应。 在实际应用中,HTTPClient库的高级特性包括: 1. **多路复用**:HTTP/2协议支持多路复用,允许多个HTTP请求共享一个TCP连接,...

Global site tag (gtag.js) - Google Analytics