问题描述
- 关于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开发环境显示编码格式都一致。
耐心改改试试。
时间: 2025-01-01 15:34:56