`
- 浏览:
1975902 次
- 性别:
- 来自:
北京
-
用httpclient4.x 发送http get post请求 中文编码问题
- <pre name="code" class="java">package org.ibmp.gmp.util;
-
- import java.io.IOException;
- import java.io.UnsupportedEncodingException;
- import java.net.URI;
- import java.net.URISyntaxException;
- import java.net.URLEncoder;
- import java.text.SimpleDateFormat;
- import java.util.ArrayList;
- import java.util.Date;
- import java.util.List;
-
- import org.apache.http.HttpEntity;
- import org.apache.http.HttpResponse;
- import org.apache.http.NameValuePair;
- import org.apache.http.ParseException;
- import org.apache.http.client.ClientProtocolException;
- import org.apache.http.client.HttpClient;
- import org.apache.http.client.entity.UrlEncodedFormEntity;
- import org.apache.http.client.methods.HttpGet;
- import org.apache.http.client.methods.HttpPost;
- import org.apache.http.entity.StringEntity;
- import org.apache.http.impl.client.DefaultHttpClient;
- import org.apache.http.message.BasicNameValuePair;
- import org.apache.http.protocol.HTTP;
- import org.apache.http.util.EntityUtils;
-
- public class HttpClientUtil {
-
- private static HttpClient httpClient = new DefaultHttpClient();
-
- /**
- * 发送Get请求
- * @param url
- * @param params
- * @return
- */
- public static String get(String url, List<NameValuePair> params) {
- String body = null;
- try {
- // Get请求
- HttpGet httpget = new HttpGet(url);
- // 设置参数
- String str = EntityUtils.toString(new UrlEncodedFormEntity(params));
- httpget.setURI(new URI(httpget.getURI().toString() + "?" + str));
- // 发送请求
- HttpResponse httpresponse = httpClient.execute(httpget);
- // 获取返回数据
- HttpEntity entity = httpresponse.getEntity();
- body = EntityUtils.toString(entity);
- if (entity != null) {
- entity.consumeContent();
- }
- } catch (ParseException e) {
- e.printStackTrace();
- } catch (UnsupportedEncodingException e) {
- e.printStackTrace();
- } catch (IOException e) {
- e.printStackTrace();
- } catch (URISyntaxException e) {
- e.printStackTrace();
- }
- return body;
- }
-
- /**
- * 发送 Post请求
- * @param url
- * @param reqXml
- * @return
- */
- public static String post(String url, String reqXml) {
- String body = null;
- try {
- //设置客户端编码
- if (httpClient == null) {
- // Create HttpClient Object
- httpClient = new DefaultHttpClient();
- }
- httpClient.getParams().setParameter("http.protocol.content-charset",HTTP.UTF_8);
- httpClient.getParams().setParameter(HTTP.CONTENT_ENCODING, HTTP.UTF_8);
- httpClient.getParams().setParameter(HTTP.CHARSET_PARAM, HTTP.UTF_8);
- httpClient.getParams().setParameter(HTTP.DEFAULT_PROTOCOL_CHARSET,HTTP.UTF_8);
- // Post请求
- HttpPost httppost = new HttpPost(url);
- //设置post编码
- httppost.getParams().setParameter("http.protocol.content-charset",HTTP.UTF_8);
- httppost.getParams().setParameter(HTTP.CONTENT_ENCODING, HTTP.UTF_8);
- httppost.getParams().setParameter(HTTP.CHARSET_PARAM, HTTP.UTF_8);
- httppost.getParams().setParameter(HTTP.DEFAULT_PROTOCOL_CHARSET, HTTP.UTF_8);
-
- // 设置参数
- List<NameValuePair> params = new ArrayList<NameValuePair>();
- params.add(new BasicNameValuePair("$xmldata", reqXml));
- httppost.setEntity(new UrlEncodedFormEntity(params, HTTP.UTF_8));
- // StringEntity entity1 = new StringEntity(getUTF8XMLString(reqXml), "UTF-8");
- // entity1.setContentType("text/xml;charset=UTF-8");
- // entity1.setContentEncoding("UTF-8");
- // httppost.setEntity(entity1);
- //设置报文头
- httppost.setHeader("Content-Type", "text/xml;charset=UTF-8");
- // 发送请求
- HttpResponse httpresponse = httpClient.execute(httppost);
- // 获取返回数据
- HttpEntity entity = httpresponse.getEntity();
- body = EntityUtils.toString(entity);
- if (entity != null) {
- entity.consumeContent();
- }
- } catch (UnsupportedEncodingException e) {
- e.printStackTrace();
- } catch (ClientProtocolException e) {
- e.printStackTrace();
- } catch (ParseException e) {
- e.printStackTrace();
- } catch (IOException e) {
- e.printStackTrace();
- }
- return body;
- }
- /**
- * 根据样式格式化时间
- * "yyyyMMdd"
- * "yyyyMMddHHmmss"
- * "yyyyMMddHHmmssssssss"
- * @param dateFormat
- * @return
- */
- public static String getnowDate(String dateFormat)
- {
- SimpleDateFormat sdf = new SimpleDateFormat(dateFormat);
- return sdf.format(new Date());
- }
-
- }
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
### Java HttpClient 发送GET请求和带有表单参数的POST请求详解 #### 一、概述 在Java编程中,处理HTTP请求是一项常见的需求,特别是在与Web服务进行交互时。Apache HttpClient库提供了一种强大的方法来执行HTTP...
接下来,我们将分别讲解HttpClient如何实现GET和POST请求: 1. GET请求: 使用HttpGet类创建GET请求,指定目标URL。例如: ```java HttpGet httpGet = new HttpGet("http://example.com"); CloseableHttpClient...
HttpClientUtil 是一个用于发送 HTTP 请求的工具类,主要支持 GET 和 POST 方法。它使用了 Apache HttpClient 库,这是一个强大的 Java 客户端编程工具包,用于处理 HTTP 协议。以下是对类中关键方法和概念的详细...
本文将深入探讨如何使用HttpClient进行GET和POST请求,并提供相关的代码示例。 首先,GET请求是最常见的HTTP请求类型,通常用于获取资源。在HttpClient中,发送GET请求可以通过`HttpGet`类实现。以下是一个简单的...
以下是一个使用HttpClient发送POST请求的Java代码示例: ```java import org.apache.http.HttpEntity; import org.apache.http.NameValuePair; import org.apache.http.client.entity.UrlEncodedFormEntity; import...
2. **构建HttpGet/HttpPost等请求对象**:设置URL、方法、请求头和实体内容。 3. **执行请求**:调用HttpClient的execute方法发送请求。 4. **处理响应**:获取HttpResponse,并解析其状态码、头部和主体。 5. **...
以下是使用HttpClient发送GET和POST请求的基本步骤: 1. 引入头文件:在代码中包含必要的头文件,如`#include <wininet.h>`。注意,为了使用这些API,需要链接到`Wininet.lib`库。 2. 初始化Internet会话:调用`...
- **构建HttpGet/HttpPost请求**:通过`HttpGet`或`HttpPost`构造HTTP请求,设置URL、方法和请求头。 - **添加请求体**:对于POST请求,可以使用`EntityEnclosingRequestBase`子类如`HttpPost`,并通过`setEntity...
它为开发者提供了强大的功能,包括但不限于发起GET、POST等HTTP方法的请求,处理响应,管理连接池,以及支持HTTPS和其他高级特性。HttpClient 4.13版本是这个库的一个较新版本,包含了一系列的改进和修复。 在Java...
本文将深入探讨如何利用Java的HttpClient库在后台模拟发送GET和POST请求,以及如何处理中文乱码问题。 首先,我们来理解GET和POST两种请求方法。GET请求通常用于获取服务器上的资源,它将参数附加到URL中,具有可...
以下是如何使用HttpClient发送GET和POST请求的示例: **GET请求示例:** ```csharp using System.Net.Http; using System.Threading.Tasks; public async Task<string> SendHttpGetRequest(string url) { using ...
以下是一个简单的示例,展示如何使用HttpClient发送一个GET请求: ```java import org.apache.http.HttpResponse; import org.apache.http.client.HttpClient; import org.apache.http.client.methods.HttpGet; ...
在POST请求中,使用HttpPost对象来指定请求URL,然后可以通过HttpEntityEnclosingRequestBase类的setEntity()方法添加请求实体,这个实体可以是简单的文本,也可以是通过httpmime库构建的MultipartEntity,用于上传...
《Apache Commons HttpClient 3.1:HTTP客户端编程的基石》 ...然而,需要注意的是,HttpClient 3.1已不再维护,最新的稳定版本为HttpClient 4.x,对于新项目建议使用更现代的版本以获取更好的性能和兼容性。
本篇将详细讲解如何处理中文乱码问题,特别是在HTTP的GET和POST请求中。参考文档来源于CSDN博主的文章,我们将围绕这个主题进行深入探讨。 首先,我们需要理解中文乱码问题产生的原因。当HTTP请求发送含有中文字符...
本示例将深入探讨如何使用HttpClient库实现POST请求。首先,我们需要理解POST请求的基本概念,它通常用于向服务器发送数据,比如提交表单或者上传文件。 在`httpclient.jar`包中,主要涉及`org.apache.http.client`...
在Android Studio中,虽然从API 23开始官方不再推荐使用`HttpClient`,因为它已被弃用,但仍有开发者因为其易用性和灵活性选择继续使用。 ## 2. 添加HttpClient依赖 由于Android Studio默认不再包含`HttpClient`,...
本示例中,我们将深入探讨如何使用`HttpClient`发送POST请求。 首先,我们需要导入必要的库。Apache HttpClient库提供了`HttpClient`和相关类,如`HttpPost`,`NameValuePair`等。在你的代码中,确保已经引入了以下...
HttpClient 3.1是该库的一个旧版本,尽管现在已经被更新的HttpClient 4.x系列取代,但在很多老项目中仍然广泛使用。它允许开发者构建复杂的HTTP请求,比如POST、GET、PUT等,并可以处理各种HTTP响应。 2. **Apache ...
最后,使用HttpClient的execute方法发送请求,并获取HttpResponse对象以处理响应。 在实际应用中,HTTPClient库的高级特性包括: 1. **多路复用**:HTTP/2协议支持多路复用,允许多个HTTP请求共享一个TCP连接,...