java-关于HttpURLConection的POST请求乱码

问题描述

关于HttpURLConection的POST请求乱码
    我在用HttpURLConection发送POST请求时,并未包含中文,但自己测试时收到的请求前面总是包含几个乱码,
    求高手解决!
    代码如下:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.ObjectOutputStream;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;

public class HttpUtil {

/**
 * 发送http POST请求
 * @param httpUrl  请求URL
 * @param httpContext 请求报文主体内容
 * @return
 * @throws IOException
 */
    public static String sendPost(String httpUrl,String httpContext) throws IOException{
        URL url = new URL(httpUrl);
        HttpURLConnection connection = (HttpURLConnection)url.openConnection();
        connection.setRequestMethod("POST");
        // 设置是否向httpUrlConnection输出,因为这个是post请求,参数要放在http正文内,因此需要设为true,默认情况下是false;
        connection.setDoOutput(true);
        connection.setRequestProperty("Content-Type","application/json; encoding=utf-8");
        connection.setRequestProperty("Connection", "keep-alive");

        OutputStream out = connection.getOutputStream();
        // 现在通过输出流对象构建对象输出流对象,以实现输出可序列化的对象。
         ObjectOutputStream objOut = new ObjectOutputStream(out);
         objOut.writeObject(httpContext);  // 向对象输出流写出数据,这些数据将存到内存缓冲区中
         out.close();
         objOut.close(); // 关闭对象输出流

         InputStream in = connection.getInputStream();
         InputStreamReader inr = new InputStreamReader(in);
         BufferedReader reader = new BufferedReader(inr);
         StringBuffer result = new StringBuffer();
         String temp;
         while((temp = reader.readLine()) != null){
             result.append(temp);
         }
         in.close();
         return result.toString();
    }

}

解决方案

spring mvc post 请求乱码
spring mvc的乱码 post请求的响应
jQuery 发送 post 请求返回字符串乱码的解决

解决方案二:

http://blog.csdn.net/luckily01/article/details/7723025

解决方案三:

你看你项目的编码什么编码。 这个很明显的。编码问题。一个一个排查。又没有几个。

解决方案四:

你这边应该没问题,查一下服务端。

解决方案五:

不是设置connection的编码,而是你获取响应流时读取InputStream的时候需要指定编码格式跟发送端的编码格式一致才行。
主要就是BufferedReader 读取响应流的代码,修正如下试试:

         InputStream in = connection.getInputStream();
         InputStreamReader inr = new InputStreamReader(in,"UTF-8");

指定编码格式跟发送端保持一致,其次,保证Eclipse工作空间的编码格式显示也是UTF-8或者GBK,就是需要数据发送编码格式,你读取数据的编码格式,Eclipse开发环境显示编码格式都一致。
耐心改改试试。

时间: 2024-05-01 19:40:00

java-关于HttpURLConection的POST请求乱码的相关文章

java HttpClient 请求乱码

问题描述 java HttpClient 请求乱码 java HttpClient 4.3.6的jar包为什么我get post 请求中文乱码还有怎么请求的时候怎么带参数我这样写有什么问题没有现在的情况就是乱码 public static void get() { try { CloseableHttpClient httpClient = HttpClients.createDefault(); HttpGet httpget = new HttpGet(""http://api.a

java前台传中文到后台乱码问题,还有浏览器的差异

问题描述 java前台传中文到后台乱码问题,还有浏览器的差异 前台通过url的形式传中文参数,后台用 String parvalue = new String( request.getParameter("parvalue").getBytes("ISO8859-1"), "utf-8"); 这样接受,在谷歌浏览器上没问题,但在IE浏览器,QQ浏览器上却是乱码. 然后换个方式,前台url += "&area=" + e

我使用Tomat做Java WEB开发,总是时不时出现乱码问题,我现在想彻底搞定乱码问题,请教大家,

问题描述 我使用Tomat做Java WEB开发,总是时不时出现乱码问题,我现在想彻底搞定乱码问题,请教大家,我应该如何做? 解决方案 这是因为你没有搞懂乱码产生的原因:乱码产生的原因是由于每一个环节所使用的编码不一致,如页面编码,请求编码,数据库存贮的编码,只有保证它们都是同一编码才不会出现乱码.我一般推荐你使用utf-8编码.对于使用Tomcat的话,一般做好以下几步就可以如你所说地彻底搞定乱码问题:1.设置Tomcat的request编码,这要配置Tomcat的server.xml文件,找

ajax请求乱码的解决方法

这篇文章主要介绍了ajax请求乱码的解决方法(中文乱码),需要的朋友可以参考下 今天遇到一个问题,有关ajax请求中传输中文,遇到乱码的问题.   如下代码: 代码如下: function UpdateFolderInfoByCustId(folderId, folderName, custId) {     $.ajax({         type: "Post",         contentType: "application/x-www-form-urlencod

Java中HttpServletResponse响应中文出现乱码问题_java

以字符串的形式输出. 1.response.getWriter().write("您好中国hello"); 如果这样输出的话.则浏览器结果为: 2.加上代码 response.setCharacterEncoding("UTF-8"); response.getWriter().write("您好中国hello"); 则浏览器结果为: 这是因为浏览器解析问题. 加上代码: response.setHeader("Content-type

java读取pdf乱码-java读取pdf文件出现中文乱码

问题描述 java读取pdf文件出现中文乱码 代码如下,读取pdf文件时,出现中文字符乱码的情况,求大神解决.. package read; import java.io.FileInputStream;import java.io.IOException;import java.io.InputStream; import com.linuxense.javadbf.DBFField;import com.linuxense.javadbf.DBFReader; public class re

Java中URL传中文时乱码的解决方法_java

前言 Java中URL传中文时乱码的问题相信不少朋友都遇到过,最近就遇到一个问题,就是在Action当中把一条中文信息绑定在URL的后面,ActionForward到别一个页面时,用reqeust.getParameter取出是出现乱码的问题. 解决办法 1.对要进行URL传递的中文字符进行编码: String message = java.net.URLEncoder.encode("中文字符","utf-8"); 2.在取URL传递中文的页面对字符进行解码: S

Java模拟HTTP Get Post请求 轻松实现校园BBS自动回帖_java

本文实例为大家分享了Java模拟HTTP Get Post请求,校园BBS自动回帖功能,供大家参考,具体内容如下 设计思路 找到帖子链接的集合,最后面数字变化, 就可以得到不同的帖子 防止帖子发表会又被删了的情况, 进行判断帖子是否存在 遍历这个集合, 对每个链接做回帖的POST请求 重难点 Note: 回帖需要用户登录信息 一种是利用Cookie 另一种是进行模拟登录 本文采用前者 代码 代码比较简单,注意事项是找到自己的Cookie,赋给String yourCookeie就可以直接运行 主

java scoket http请求-求教:java socket编程接受HTTP请求出问题

问题描述 求教:java socket编程接受HTTP请求出问题 自己用Java scoket模拟编写接受http请求服务器,在浏览器中输入1次url地址,浏览器却会向服务器发送多次相同请求,这是什么原因? 以下是eclipse控制台打印的结果,可以看到浏览器发送了多次 /1234567890 请求,浏览器中地址栏只输入1次 http://localhost:8080/1234567890 eclipse控制台打印的结果: 初始化线程池,线程池中拥有10个线程可使用 初始化 base-param