`
程序员是怎么炼成的
  • 浏览: 33435 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

httpClient发送 返回报文乱码,httpClient发送https请求

    博客分类:
  • java
阅读更多

httpClient发送 返回报文乱码,返回的报文确实为utf-8,然而用

HttpEntity entity = response.getEntity();

String retule=EntityUtils.toString(entity, "UTF-8");

指定实体的编码返回的报文还是乱码。

 

 

解决办法---------------

①:

HttpEntity entity = response.getEntity()

InputStream  is =entity.getContent();

 

用输出流接收is中的内容就行了,这样的话第三方放回什么内容,此处就会接收到什么内容,不会出现乱码的问题。

 

②:

使用String类的构造方法进行编码转换

String temp=EntityUtils.toString(entity, "UTF-8");

String result=new String(temp.getBytes("ISO-8859-1"),"utf-8")。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

public static String sendSSLPostRequest_unitedB2C(String reqURL,

Map<String, String> params) {

String responseContent = null; // 响应内容

HttpClient httpClient = new DefaultHttpClient(); // 创建默认的httpClient实例

X509TrustManager xtm = new X509TrustManager() { // 创建TrustManager

public void checkClientTrusted(X509Certificate[] chain,

String authType) throws CertificateException {

}

 

public void checkServerTrusted(X509Certificate[] chain,

String authType) throws CertificateException {

}

 

public X509Certificate[] getAcceptedIssuers() {

return null;

}

};

try {

// TLS1.0与SSL3.0基本上没有太大的差别,可粗略理解为TLS是SSL的继承者,但它们使用的是相同的SSLContext

SSLContext ctx = SSLContext.getInstance("TLS");

// 使用TrustManager来初始化该上下文,TrustManager只是被SSL的Socket所使用

ctx.init(null, new TrustManager[] { xtm }, null);

// 创建SSLSocketFactory

SSLSocketFactory socketFactory = new SSLSocketFactory(ctx);

// 通过SchemeRegistry将SSLSocketFactory注册到我们的HttpClient上

httpClient.getConnectionManager().getSchemeRegistry()

.register(new Scheme("https", 443, socketFactory));

// 请求超时

httpClient.getParams().setParameter(

CoreConnectionPNames.CONNECTION_TIMEOUT, 20000);

// 读取超时

httpClient.getParams().setParameter(

CoreConnectionPNames.SO_TIMEOUT, 20000);

HttpPost httpPost = new HttpPost(reqURL); // 创建HttpPost

List<NameValuePair> formParams = new ArrayList<NameValuePair>(); // 构建POST请求的表单参数

for (Map.Entry<String, String> entry : params.entrySet()) {

formParams.add(new BasicNameValuePair(entry.getKey(), entry

.getValue()));

}

httpPost.setEntity(new UrlEncodedFormEntity(formParams, "UTF-8"));

 

HttpResponse response = httpClient.execute(httpPost); // 执行POST请求

HttpEntity entity = response.getEntity(); // 获取响应实体

 

ByteArrayOutputStream baos = new ByteArrayOutputStream();

if (null != entity) {

InputStream is = entity.getContent();

 

int len=0;

byte[] b=new byte[2014];

 

   while((len = is.read(b)) !=  -1){

       baos.write(b, 0, len);

   }

}

responseContent=new String(baos.toByteArray());

} catch (Exception e) {

logger.error("HttpClientUtil SSL POST请求异常,堆栈信息如下", e);

} finally {

httpClient.getConnectionManager().shutdown(); // 关闭连接,释放资源

}

return responseContent;

}

 

 

 

分享到:
评论

相关推荐

    httpclient 客户端发送xml报文到服务器端采用post方式(加密)传递

    本示例探讨的是如何使用HTTPClient库在客户端发送XML报文到服务器端,且报文通过POST方法传递,并可能涉及加密处理,确保数据的安全性。 首先,HTTPClient是Apache提供的一款强大的Java HTTP客户端API,它允许...

    httpclient4.5发送https请求(验证证书)

    不会的可以在评论区留言哈,这是我自己做项目用到的。所以绝对可用!同时共享出来给到大家

    SpringBoot使用httpclient发送Post请求时

    try(CloseableHttpClient httpClient = HttpClients.createDefault()) { HttpPost httpPost = new HttpPost(url); StringEntity stringEntity = new StringEntity(params, Charset.forName("UTF-8")); ...

    httpclient发送post请求

    本篇文章将深入探讨如何使用HTTPClient发送POST请求,以及相关的项目结构和实现细节。 首先,"post-demo"项目定义了我们需要调用的接口。通常,这会是一个Web服务,可能是一个RESTful API,提供特定的功能或数据。...

    彻底解决httpClient乱码问题

    在发送请求时,可以使用`EntityUtils.toString(entity, "UTF-8")`来指定解码的字符集,确保与服务器响应的字符集一致。 2. **HTTP头信息**:服务器可能会在响应头中包含`Content-Type`字段,指示了响应体的MIME类型...

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

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

    利用HttpClient发送HTTP请求

    利用HttpClient发送HTTP请求 利用HttpClient发送HTTP请求

    HttpClient、乱码解决:实例

    以下是一个简单的使用HttpClient发送GET请求并处理乱码的示例: ```java CloseableHttpClient httpClient = HttpClients.createDefault(); HttpGet httpGet = new HttpGet(url); httpGet.setHeader("Accept-Charset...

    java http 发送xml报文(java发送xml报文实例+参数)

    发送XML报文通常涉及到POST或GET请求,这里以POST请求为例,因为POST更适合发送大量数据,如XML文档。 1. **创建XML文档** 在发送XML之前,我们需要先构建XML文档。可以使用DOM(Document Object Model)或者SAX...

    java使用HttpClient发送http请求

    在Java编程中,HttpClient是一个非常重要的工具库,用于发送HTTP请求和处理响应。这个工具广泛应用于各种场景,如数据抓取、API交互等。本文将深入讲解如何使用HttpClient来发送HTTP请求,以及相关的源码分析。 ...

    httpclient post方式发送请求

    在Java编程中,HTTPClient库是一个非常常用的工具,用于发送HTTP请求,包括POST方式的请求。本篇文章将详细讲解如何使用HTTPClient库以POST方式发送JSON格式的数据,并介绍相关依赖包。 首先,为了使用HTTPClient库...

    HttpClientUtil工具类发送get和post请求,支持http和https,支持发送文件

    综上所述,HttpClientUtil工具类在IT应用中扮演着关键角色,简化了HTTP和HTTPS请求的实现,特别是发送文件这样的复杂操作。通过封装HttpClient的核心功能,开发者可以更加专注于业务逻辑,而不必关心底层网络通信的...

    HttpClient发送http请求需要的jar包

    4. 使用HttpClient的execute()方法发送请求,并获取HttpResponse对象。 5. 解析HttpResponse,获取状态码、响应头和实体内容。 6. 清理资源,关闭连接。 在实际开发中,你可能还需要考虑错误处理、重试策略、连接池...

    HttpClient 发送get和post请求

    一个简单的易学的 基于HttpClient 4.3发送psot及get请求,返回数据,适合初学者,适合初学者

    (完整版)JAVA利用HttpClient进行POST请求(HTTPS).doc

    在本文中,我们将详细介绍如何使用JAVA的HttpClient库来发送POST请求,以便与HTTPS服务器进行交互。首先,我们需要继承DefaultHttpClient类,以便自定义HttpClient的行为。然后,我们需要使用X509TrustManager来忽略...

    使用HttpClient发送POST请求,并获取响应内容(附详细步骤).txt

    ### 使用HttpClient发送POST请求,并获取响应内容 #### 一、简介 在现代软件开发中,尤其是在Web应用领域,客户端与服务器之间的通信是非常重要的环节。Java作为一种广泛应用的编程语言,提供了多种方式来实现这一...

    java 中HttpClient传输xml字符串实例详解

    最后,我们需要使用HttpClient发送POST请求。首先,创建一个`CloseableHttpClient`实例,然后构建一个`HttpPost`对象,指定请求的URL。接着,设置`HttpPost`的实体为之前创建的`InputStreamEntity`,并执行请求: `...

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

    以下是一个使用HttpClient发送GET请求的Java代码示例: ```java import org.apache.http.HttpResponse; import org.apache.http.client.methods.HttpGet; import org.apache.http.impl.client.CloseableHttpClient;...

    HttpClient发起HTTPs请求.rar

    在处理POST请求返回的JSON数据时,我们可能使用`JSONObject.parseObject()`方法将JSON字符串转换为Java对象。例如,如果返回的数据是JSON格式,我们可以这样做: ```java String jsonString = sendHttpPost(...

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

    通过上述内容,你应该对使用HttpClient发送HTTP请求有了基本的理解。实践中,可以根据具体需求进行更复杂的定制和配置。在实际项目中,HttpClient是一个强大而灵活的工具,能够帮助你轻松地处理网络通信任务。

Global site tag (gtag.js) - Google Analytics