您的位置:首页 > 理论基础 > 计算机网络

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

2016-08-19 16:47 363 查看
最近公司做的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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: