okhttp框架中如何设置post请求的编码格式

在Android项目中使用Okhttp2.7进行POST请求时遇到中文乱码问题,通过特定方法成功设置编码格式为UTF-8。Okhttp3及以上版本的设置则更为简便。

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

最近公司做的android项目中需要使用post请求发送表单数据,我使用的是okhttp网络请求框架,发现传递过去的中文数据乱码,弄了半天才成功设置了编码格式为utf-8,现在总结分享如下:

FormEncodingBuilder builder = new FormEncodingBuilder();
builder.add("platform","app");
builder.add("apiCode","sendBusiness");
builder.add("id",id);
builder.add("receiver",teachBean.getKey());
builder.add("expirationDate",expirationDate);
RequestBody body = builder.build();
Request request = new Request.Builder().url(publishUrl).post(body).build();
这是我修改之前的代码,使用了FormEncodingBuilder类传递参数,于是出现乱码,后来发现不能用FormEncodingBuilder,因为他的编码是默认的,无法修改。

要设置编码格式只能使用如下方法:

RequestBody body = RequestBody.create(MediaType.parse("application/x-www-form-urlencoded;charset=utf-8"),
        params);
params是字符串,格式类似 “key=value&key=value”,如果提交多个键值对可以把键值对拼接成一个字符串,比如

"platform=app&apiCode=responseBusin&entity=参数值"
这样设置就OK了。

注:我使用的版本是okhttp2.7,okhttp3以上的版本设置编码就比较简单了,应该是用FormBody

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值