POST请求,GET请求接收到的数据都是乱码

POST请求,GET请求接收到的数据都是乱码

https://img1.sycdn.imooc.com//climg/613aedd8092626f018710516.jpg

private void sendPostRequest(String account,String pwd){
new Thread(){
@Override
       public void run() {
try {
//1初始化URL
               URL url = new URL("http://www.imooc.com/api/okhttp/postmethod");
               //2实例化HttpURLConnection
               HttpURLConnection con = (HttpURLConnection) url.openConnection();
               //3设置请求相关的属性
               //发送get请求
               con.setRequestMethod("POST");
               con.setConnectTimeout(6000);
               //设置允许输出
               con.setDoOutput(true);
               //设置请求数据的类型
               con.setRequestProperty("Content-Type","application/x-www-from-urlencoded" );
               //获取输出流
               OutputStream outputStream = con.getOutputStream();
               outputStream.write(("account="+account+"&pwd="+pwd).getBytes());
               if (con.getResponseCode() == HttpURLConnection.HTTP_OK) {

//获取响应输入流
                   InputStream in = con.getInputStream();
                   //对输入获取到的输入流进行读取
                   byte[] bytes = new byte[1024];
                   int sign = 0;
                   //定义输出缓存流
                   ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
                   while ((sign = in.read()) > -1) {
byteArrayOutputStream.write(bytes,0,sign);
                   }
String str = new String(byteArrayOutputStream.toByteArray());
                   Log.d("TAG",str);

               }

}catch (Exception e){
e.printStackTrace();
           }
}
}.start();


}

问题描述:


出现上述截图情况,POST请求,GET请求接收到的数据都是乱码

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
LovelyChubby 2021-09-11 21:21:25

应该不是请求得到的是乱码,而是IDE在输出的时候乱码了,这种情况是IDE不支持中文输出 ,可以通过IDE右下角来调整下IDE的编码格式为UTF-8--->GBK等等试试

  • 提问者 不会秃瓢 #1

    https://img1.sycdn.imooc.com//climg/613ea9b109a90fc909960710.jpg

    编码格式utf-8,GBK,ISO都试过了,输出还是乱码

    2021-09-13 09:31:13
  • LovelyChubby 回复 提问者 不会秃瓢 #2

    emm....  这个问题就是你的IDE 编码格式的问题,可以百度下,多捯饬捯饬试试😂

    2021-09-14 10:56:28
  • 提问者 不会秃瓢 回复 LovelyChubby #3

    InputStream in = con.getInputStream();
    BufferedReader reader = new BufferedReader(new InputStreamReader(in));
    StringBuilder response = new StringBuilder();
    String line;
    while ((line = reader.readLine()) != null) {
    response.append(line);
    }
    Log.d("TTT", response.toString());

    此方法可以获取正常的get请求的返回结果

    2021-09-22 11:22:53
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
2.Android 网络操作与流行框架
  • 参与学习           人
  • 提交作业       220    份
  • 解答问题       1800    个

本阶段是联网及数据处理的必备技能。课程从网络基础知识到线程间协同工作、异步下载处理;从文件存储、到轻量级数据库SQLite的使用;最后利用最流程的第三方框架助你快速开发企业级APP。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师