OkHttp post请求编码问题

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/CutelittleBo/article/details/49862299

给同事做一个小程序,模拟网页的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();

猜你喜欢

转载自blog.csdn.net/CutelittleBo/article/details/49862299