最近公司做的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