博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android StringEntity() 和 UrlEncodedFormEntity() 的区别
阅读量:6882 次
发布时间:2019-06-27

本文共 1508 字,大约阅读时间需要 5 分钟。

今天在做安卓客户端向服务器提交数据的过程中,在组织POST数据时,用了UrlEncodedFormEntity()这个方法,但是后台报错,说是无法解析json内容。

按照本来的想法,向后台发送的是 json 格式的内容,里面有参数和值,供后台程序处理,形式如下“:

{"content":"鍛樺伐涓氬姟姘村钩涓嶈冻","townId":"14","companyId":"8","date":"2014-12-27","supervisor":"鑻忚礊鏄?,"userId":0}

但是,用UrlEncodedFormEntity()方法组织的数据发送到服务器却是如下形式:

companyId=8&townId=14&date=2014-12-27&supervisor=%E8%B0%A2%E9%95%BF%E5%BB%B7&content=%E5%91%98%E5%B7%A5%E4%B8%9A%E5%8A%A1%E6%B0%B4%E5%B9%B3%E6%9C%89%E5%BE%85%E6%8F%90%E9%AB%98&userId=0

很显然,是普通的键值对,不是json,所以后台无法接受。

后来改用 StringEntity()方法组织数据,数据的形式就非常自由了,可以组织成自己想要的任何形式,问题解决。

下面来比较一下两种方法的使用:

1. UrlEncodedFormEntity() 

[java] 
  1. List<NameValuePair> pairs = new ArrayList<NameValuePair>();  
  2.   
  3. NameValuePair pair1 = new BasicNameValuePair("supervisor", supervisorEt.getEditableText().toString());  
  4. NameValuePair pair2 = new BasicNameValuePair("content", superviseContentEt.getEditableText().toString());  
  5. NameValuePair pair3 = new BasicNameValuePair("userId", String.valueOf(signedUser.getId()));  
  6.                   
  7. pairs.add(pair1);  
  8. pairs.add(pair2);  
  9. pairs.add(pair3);  
  10.                   
  11. httpPost.setEntity(new UrlEncodedFormEntity(pairs, HTTP.UTF_8))  


2. StringEntity()

[java] 
  1. JSONObject postData = new JSONObject();  
  2.                   
  3. postData.put("supervisor", supervisorEt.getEditableText().toString());  
  4. postData.put("content", superviseContentEt.getEditableText().toString());  
  5. postData.put("userId", signedUser.getId());  
  6.                   
  7. httpPost.setEntity(new StringEntity(postData.toString(), HTTP.UTF_8));  

可以看出,UrlEncodedFormEntity()的形式比较单一,只能是普通的键值对,局限性相对较大。

而StringEntity()的形式比较自由,只要是字符串放进去,不论格式都可以

转载地址:http://akbbl.baihongyu.com/

你可能感兴趣的文章
Word Search leetcode
查看>>
关于Java传值
查看>>
Android Animation Interpolator - Android 动画插值器分析
查看>>
Markdown语法学习
查看>>
Apache流计算框架详细对比
查看>>
MKVToolNix v33.0.0 发布,MKV 视频编辑工具软件
查看>>
4. Rxjs 介绍及注意事项
查看>>
使用spring@Schedule注解定时任务时将时间表达式写入配置文件中的方法
查看>>
Linux 访问windows下的FTP服务器
查看>>
如何在函数计算中使用结构化的用户日志
查看>>
Javascript中如何获取统一管理的Java提示语
查看>>
体积光渲染技术
查看>>
NutzBoot 2.3.4.v20190410 持续改进
查看>>
JSON学习
查看>>
这一次,我拒绝了Python,选择了Go
查看>>
CUBA Studio 7.4 发布,企业级应用开发平台
查看>>
Intellij IDEA 使用教程
查看>>
第十五章:交互式界面(三)
查看>>
Etcd集群搭建和使用简介
查看>>
音视频技术开发周刊 63期
查看>>