OkHttp设置返回数据的编码类型

来源:互联网 发布:淘宝好的零食店铺知乎 编辑:程序博客网 时间:2024/05/21 17:22

OkHttp是一个http连接工具,解决了使用java创建http连接访问服务器的问题,相对于以往的HttpClient而言更加成熟。

在OkHttp的使用当中,一般参考网上的现成的代码教程即可,例如:
http://blog.csdn.net/xiahao86/article/details/44753513

在这些例子当中往往会使用response.body().string()这个方法来获取返回字符串,但是我们依然会碰到返回数据时乱码的问题。

由于OkHttp在解析response的时候依靠的是response头信息当中的Content-Type字段来判断解码方式,例如:

Content-Type:text/html; charset=utf-8

这就遇到了一个问题,就是如果Content-Type没有写charset字段怎么办?OkHttp会使用默认的UTF-8编码方式来解码,那如果万一页面没有写该字段,还使用GBK编码呢?自然而然是乱码了。我就遇到了这个问题,在网上找了一下,没有找到可以直接设置Response返回字符串编码方式的方法,最后想了一个解决方案,不使用response.body().string()自动转为字符串,而是获取流或者byte数组,然后我们手动转为字符串,并且设置编码方式,说起来复杂,其实OkHttp早就给我们留下了方法,所以代码只有两行:

byte[] responseBytes=response.body().bytes();

String responseUrl = new String(responseBytes,”GBK”);

轻松解决。


实测, 可行。


本文转自JAVAEERun.com 转载请注明
http://www.javaeerun.com/p/1461120389148.html


原创粉丝点击