解决HttpPost+json请求---服务器中⽂乱码及其他问题
好凌乱的题⽬,只是⼀些功能点的总结咯。
⾸先构造⼀个json对象⽤于存放数据,如果光加上header为utf-8就能解决中⽂就⼤错特错了。。。
json对象可以put变量,也可以put对象。取的时候
HttpClient httpClient = new DefaultHttpClient();
String url = "***";
HttpPost httpPost = new HttpPost(url);
HttpResponse response;
httpPost.addHeader("Content-Type", "application/json;charset=utf-8");
JSONObject obj = new JSONObject();
obj.put("action", "postHttp");
JSONObject people= new JSONObject();
people.put("name", "张三");
obj.put("people",people);
接下来就是处理中⽂了。这么看的话好像没啥难的哈,就是把obj在转成StringEntity的时候限制⼀个格式再发给httpPost。
StringEntity se = new StringEntity( String(),"UTF-8");
se.setContentEncoding(new BasicHeader(HTTP.CONTENT_TYPE, "application/json"));
httpPost.setEntity(se);
response = ute(httpPost);
int code = StatusLine().getStatusCode();
url编码处理补充:发送post时,设置了utf-8,中⽂还是乱码?
我们⽤HttpUrlConnection或HttpClient发送了post请求,其中有中⽂,虽然我们两边都设置了utf-8,但还是乱码?
我们在request和response端应该设置了如下:
request.setCharacterEncoding("utf-8");
post.setHeader("Content-type", "application/json; charset=utf-8");
但是对于中⽂,我们还要进⾏url编码和解码
param= URLDecoder.decode(param); //url解码
虽然这两个⽅法已经过时,但是jdk8并没有删除它,我们照样可以⽤。这是取简易的⽅法,如果以上⽅法不⾏,我们就加上编解码⽅式,不过会抛出UnsupportedEncodingException异常,要处理。
param= URLDecoder.decode(param,"utf-8"); //url解码
以上为个⼈经验,希望能给⼤家⼀个参考,也希望⼤家多多⽀持。如有错误或未考虑完全的地⽅,望不吝赐教。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论