关于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();
    }

}图片说明

0

5个回答

0

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

0

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

0

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

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

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

0
wojiushiwo945you
毕小宝 回复毕小宝: 这个InputStreamReader的默认编码就是UTF-8的.
3 年多之前 回复
wojiushiwo945you
毕小宝 先改成gbk试试,可能发送端的数据是GBK的。
3 年多之前 回复

你可以试试OKHttp或者Volley

0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
HttpClient请求参数乱码
前提:Post形式传递参数。 问题:HttpClient Post形式传递参数乱码 解决方式:扩展PostMethod public class UTF8PostMethod extends PostMethod{ public UTF8PostMethod(String url){ super(url); } @Override p...
angularjs中$http POST中文参数乱码
$http({                method: "POST",                url: "",                data: id,                headers: { 'Content-Type': 'application/x-www-form-urlencoded;charset=utf-8' },                tr
post请求乱码
tomcat默认编码格式是iso-8859-1,前台传来的数据会产生乱码,解决方法: String xxx = new String(xxx.getBytes("iso-8859-1"), "utf-8"); // 长期更新,一直跟乱码做斗争 ...
form表单post提交时中文乱码
若提交数据是在form表单中以post方式提交时出现中文乱码解决方案 /*request.setCharacterEncoding("UTF-8");  //请求页面的编码 response.setCharacterEncoding("UTF-8");  //响应页面的编码 */
Java post请求以及响应乱码的解决
public static String sendPost(String url, String param) throws Exception{                  BufferedReader in = null;         String result = ""; //        try {             URL realUrl = new URL(
Get 与Post 请求数据乱码处理
Get 与Post 请求数据乱码处理 1. 前言 某交流群 Just now 提问者:     Get 请求,中文乱码怎么处理? 热心人:     对re
Spring的字符过滤器的配置
xml 代码 在web.xml设置一下使用Spring的过滤器给所有的地址进行转码就可以了:    <filter>       <filter-name>Spring character encoding filter</filter-name>       <filter-class>org.springfr...
Java | POST请求,响应中文乱码处理
老生常谈-关于POST请求中文乱码问题
浅析SpringMVC POST请求中文乱码
笔者近日遇到了SpringMVC框架POST提交中文乱码的问题。对此进行了调查,解决方法在网上有很多,在此进行总结。 在SpringMVC框架下,解决中文提交乱码的问题,首先要保证页面设定的form的字符编码是UTF-8格式。 其次,Servlet服务器实现的Servlet遇到URL和POST提交的数据,它会按照指定的字符集解码。这里所说的"指定的字符集"是在应用服务器的配置文
GET请求不乱码,Ajax请求POST乱码问题
      在写公众号界面前后端交互的时候,使用jq向后台controller进行传值。然而去看数据库保存的值==,全是ISO8859-1。然后就开始一个一个测试、比对,从前端界面编码,再到f12,后端编码,甚至于xml配置、tomcat编码全部检查了一遍。可能本人前端还是很渣,对于请求理解不够,足足折磨了两天,最终还是一个网上认识的大牛给我远程解决的。在此,我也感谢帮助过我的人,看来IT圈中是...
解决POST请求乱码问题
在本地写了个脚本,请求服务器,请求方式是POST请求,设置seParameter,传递参数是中文,然后在服务器端接受的参数已经变为乱码,解决方式: 自定义POST请求的编码方式: public static class UTF8PostMethod extends PostMethod { public UTF8PostMethod(String url) { ...
IE浏览器url链接post请求中文乱码问题
解决post请求中的中文参数乱码问题,可以只需通过js给post参数加密编码,然后通过浏览器自带解码解析中文参数显示,前台的两次编码第一次是将所有的中文转换成ASCII码。第二次针对ASCII字符串再次的编码。
解决post get 请求乱码问题
可以解决post get请求乱码问题.
Java中GET/POST请求、JSP页面中文乱码
一、问题 Java开发当中,经常遇到中文乱码问题,一般分为GET请求中文乱码、POST请求中文乱码、JSP页面中文乱码。 二、解决办法 1.POST请求中文乱码 这个情况,解决办法最简单,在WEB-INF下的web.xml中配置utf-8编码过滤器 <!-- 配置post请求编码过滤器,统一设置为utf-8 --> <filter> <filter-na...
Servlet-1-filter-3.rar
对get、post请求进行全站防乱码控制
SpringMVC学习--POST请求中文乱码问题
在之前我们没有用基于注解的控制器时,controller是这么写的: public class SaveProductController implements Controller{ private static final Log logger= LogFactory.getLog(SaveProductController.class); @Override...
关于Fiddler post请求中文参数乱码问题的处理
post请求中文乱码问题 请求头里面加入:Content-Type: application/x-www-form-urlencoded;charset=utf-8 请求体的格式 partyName=王二小&certNo=Nah6zkt      
IOS项目之AFNetworking中文乱码问题
在IOS项目开发过程中,使用AFNetworking做网络请求模块, 后台服务器出现中文乱码情况,而且乱码情况十分怪异: 同样的中文数据,第一次请求就是乱码,以后的请求就正常…… 如果再次将请求的中文数据修改后,再次请求则乱码,继续请求则正常…… 针对这种情况,我真心没办法定位错误原因…… 纠结了好久之后,我想到使用Charles抓取AFN的请求包内容查看, 这是未进行任何设置
更改Tomcat字符编码设置及解决post请求中文字符乱码
URL解码后出现乱码 我遇到这个问题的时候是在做一个第三方支付接口的时候,在回调函数中,解码URL的时候怎么解都不好使,解出来是乱码的问题,搞了半天没解决,百度找到了另一种方法。 这是第一种方法 new String(getURLDecoderString(json).getBytes("ISO-8859-1"),"utf-8")//json是你要解码的东西 第二种方法,后来的时候公司的以为大佬指点,出现这种情...
android post请求服务器出现乱码问题
客户端代码:    namesecond = URLEncoder.encode(URLEncoder.encode(name1.getText().toString().trim(), "UTF-8"), "UTF-8");   params.put("name",namesecond);    name1代表edittext中的文本。 服务器中代码:    a
POST&GET请求,响应乱码问题解决办法
(POST请求放在请求体中,而GET请求在浏览器的地址栏中) POST请求乱码问题: 假设这样的场景:在浏览器中有一个表单,我们在表单中输入了中文汉字,在Servlet中的doPost中,我们尝试获取这个参数并进行打印,在浏览器提交了请求之后发现在服务器控制台打印的是中文乱码。如何解决这个问题? 在获取这这个参数之前,设置 request.setCharacterEncoding("UT...
httpclient4 post提交请求乱码问题解决
第一种: HttpPost post=new HttpPost(url); StringEntity content=new StringEntity(data, Charset.forName("utf-8"));// 设置编码 content.setContentType("application/json; charset=UTF-8"); content.setContentEnc
restTemplate 的post请求解决 乱码问题
HttpHeaders headers = new HttpHeaders(); MediaType type = MediaType.parseMediaType("application/json; charset=UTF-8"); // 请勿轻易改变此提交方式,大部分的情况下,提交方式都是表单提交 headers.setContentType(type...
对实际项目中的get请求中文乱码以及post请求中文乱码的解决方案
1.解决post请求的中文乱码问题 (1)在项目中web.xml配置文件中加入: CharacterEncodingFilter org.springframework.web.filter.CharacterEncodingFilter encoding utf-8 CharacterEncodingFilter /* 以上可以解决post请求乱码问题
C# 简单POST请求同时防止中文乱码的出现
概要 在网络请求当中,总有可能会出现一些因为编码的问题而导致请求/发送出去的中文字符变成了乱码的情况,而这些情况大多都是因为对网络的请求/回应没有做好编码而导致的。在这里,我将要讲述一些我自己解决这些乱码的情况的经验 中文乱码现象 出现乱码的现象可以分为两种,一种是发送出去的数据是乱码,其中一种表现应该就是你想要将某些中文字符的字符串保存在数据库当中,结果,一保存就变成了一堆???了。另...
retrofit2 POST请求体乱码终极解决
网络上处理办法较多的 如: http://blog.csdn.net/iromkoear/article/details/74295650 [属于避开被编码] 1.出现问题:如下发起网络请求,服务端收到内容会乱码。 2.解决办法如下 : 添加一个注解 或者 代码配置: 这里为了更快解决问题直接添加一个注解,推荐代码配置 @Headers("Content-Ty
HTTP POST请求中文乱码问题解决
先上代码 public static String sendUrl(String urlString, String pram,String readCharset ) { StringBuffer sb = new StringBuffer(); DefaultHttpClient httpclient = new DefaultHttpClient(); BufferedReader
jQuery 发送 post 请求返回字符串乱码的解决
后端代码:@RequestMapping(params ="method=getCommentsBySentence",method= RequestMethod.POST) public void getCommentsBySentence(Map<String,Object> map,@RequestParam String essayContextStr,HttpServletResponse
C# 模拟POST请求中文乱码
使用HttpUtility.UrlEncode()把有中文的参数包裹起来
UrlConnection post请求中文参数乱码问题
UrlConnection post请求中文参数乱码问题
Post和Get请求之间的区别以及如何避免出现中文乱码
请求参数这个是非常重要的,以后几乎就离不开它了啊,请求参数包括,表单提交的数据,超链接提交的参数。例如:http://localhost:8080/day05_1/AServlet?username=zhangsan&amp;amp;password=123;在这个地址中共有两个参数,参数名:username;参数值;zhangsan.  参数名:password,参数值:123;&amp;lt;form act...
SpringMVC解决POST请求乱码
在web.xml配置文件中添加spring自带的Filter设置编码格式 &lt;filter&gt; &lt;filter-name&gt;characterEncodingFilter&lt;/filter-name&gt; &lt;filter-class&gt;org.springframework.web.filter.CharacterEncodingFilter&l...
表单提交post方式出现乱码,get方式提交不乱码
@WebServlet(urlPatterns = "/Requestdemo03") public class Requestdemo03 extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException...
Get请求,Post请求乱码问题解决方案
之所以出现乱码,主要是由于编码和解码采用的方法不同。 因此保证编码解码格式一致是避免乱码发生的重要前提。 问题背景:JavaWeb技术下,Tomcat作为容器,发送请求的时候出现乱码问题。 下面以两种常见的请求方式为例讲解乱码问题的解决方法。 1.Post方式请求乱码。     自从Tomcat5.x以来,Get方式和Post方式提交的请求,tomcat会采用不同的方式来
解决Get和post请求中中文乱码问题
1.1 post请求解决乱码 1.对于Post请求,只需在Servlet或者jsp中写入如下代码就可以把解决从表单中传入的中文乱码问题   request.setCharacterEncoding("utf-8");   String str=request.getParameter("name");   byte[] bytes=str.getBytes("ISO-8859-1");
关于get请求乱码而post方式不会乱码详解
1.post请求为什么不会乱码? jsp页面有pageEncoding=&quot;UTF-8&quot;,进行编码设置,服务端web.xml中有过滤器 org.springframework.web.filter.CharacterEncodingFilter进行request.setCharacterEncoding(&quot;utf-8&quot;)操作, 故在服务端获取的参数不会乱码。   2.get请求为什么会乱...
关于get和post请求中文乱码的解决办法
web项目中经常遇到中文乱码问题,本文简单记录遇到中文乱码问题时的解决方案,代码如下 ×Close 产品类型添加 类型名称 取消 我们可以看到这是一段典型的form表单提交的代码,在后台中我们通过request请求获取输入框内的值,这时输入中文字符后出现乱码。(在查找问题前,先确保eclipse的字符
Spring MVC @ResponseBody 中文乱码 解决方案
Spring MVC @ResponseBody 中文乱码 解决方案1在springmvc-servlet.xml中加入以下代码<mvc:annotation-driven> <mvc:message-converters> <bean class="org.springframework.http.converter.StringHttpMe
SpringMVC解决POST请求乱码 配置Filter后仍未解决
使用SpringMVC处理请求的时候,可能会有乱码,此时需要在web.xml配置Filter。配置如下: encodingFilter org.springframework.web.filter.CharacterEncodingFilter encoding
springMVC解决post、get中文乱码
一、解决post请求中文乱码 characterEncoding org.springframework.web.filter.CharacterEncodingFilter encoding utf-8 characterEncoding /* 二、解决get方式请求中文乱码 将Tomcat的server.xml打开 Connector