OkHttp Post请求乱码

在Android开发中,使用OkHttp进行Post请求时遇到中文参数乱码问题。即使在前端设置参数编码,后台仍接收到乱码。原因在于OkHttp的表单请求默认编码非UTF-8。为解决此问题,可以改用`RequestBody.create()`方法,并明确指定UTF-8编码,从而成功避免乱码出现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

OkHttp Post请求乱码

做Android开发中,向后台提交数据时,okhttp是一个常用的组件,但是在前段时间的使用中,我发现使用okhttp进行post提交中文参数时出现了乱码

在这里插入图片描述

这是在前台提交时断点,显示所有参数都是中文,还未出现乱码,之后也成功提交到了后台

而在后台接收的时候,中文参数全部乱码

在这里插入图片描述

这是怎么回事呢?首先我去看了服务端接收时的编码声明,确实是utf-8

在这里插入图片描述

那可能是客户端的问题,在请求提交的时候未进行编码设置

在这里插入图片描述

但是请求前也设置了参数编码,也还是乱码了。后来我查阅了资料,原来如果用FormBody发送post表单请求,就不能设置编码格式,contentType方法没有暴露出来,默认也不是UTF-8,参数是汉字就会乱码。

所以换一种方式 ,用 RequestBody ,首先声明编码常量

//构建 POST 请求
    private static Request createPostRequest(String url, Map<String, Object> parameters) {
        StringBuffer sb = new StringBuffer();
        //设置表单参数
        for (String key: parameters.keySet()) {
//
            sb.append(key+"="+parameters.get(key)+"&");
        }
        Log.i("TAG", ""+sb.toString());

        RequestBody body = RequestBody.create(FORM_CONTENT_TYPE, sb.toString());

        //创建请求
        return new Request.Builder()
                .url(url)
                .post(body)
                .build();
    }

在这里插入图片描述

成功解决乱码问题!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值