OkHttp post请求编码问题

给同事做一个小程序,模拟网页的post请求。

遇到问题,服务器是gb2312的编码,而okhttp默认返回和发送都换转成utf8的编码,造成数据返回变成了。。。乱码。。。

那么解决思路就是将编码转化为gb2312。

那么解决思路有了,那么怎么转换呢。。
找了些资料。
首先是将返回的数据解析成gb2312

在回调方法onResponse方法中

byte[] b = response.body().bytes();     //获取数据的bytes
String info = new String(b, "GB2312");   //然后将其转为gb2312

然后是post请求
默认使用FormEncodingBuilder可以构建键值队的post请求,但是它没办法更改参数的编码,如果需要更改就需要改源代码,没必要那么麻烦吧。

那么就使用RequestBody.create();
自己设置一系列的参数
RequestBody.create(MediaType.parse(“application/x-www-form-urlencoded;charset=gb2312”)

设置post类型是application/x-www-form-urlencoded
charset是gb2312
那么开始构建键值队
其实就是一个字符串
key1=value1&key2=value2
然后放到第二个参数里就行了

Request request = new Request.Builder().url(url)
.post(RequestBody.create(MediaType.parse("application/x-www-form-urlencoded;charset=gb2312"),内容))
.build();
  • 11
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值