Android StringEntity() 和 UrlEncodedFormEntity() 的区别
2015-03-27 17:26
211 查看
今天在做安卓客户端向服务器提交数据的过程中,在组织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()
2. StringEntity()
而StringEntity()的形式比较自由,只要是字符串放进去,不论格式都可以。
但是,用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()
List<NameValuePair> pairs = new ArrayList<NameValuePair>(); NameValuePair pair1 = new BasicNameValuePair("supervisor", supervisorEt.getEditableText().toString()); NameValuePair pair2 = new BasicNameValuePair("content", superviseContentEt.getEditableText().toString()); NameValuePair pair3 = new BasicNameValuePair("userId", String.valueOf(signedUser.getId())); pairs.add(pair1); pairs.add(pair2); pairs.add(pair3); httpPost.setEntity(new UrlEncodedFormEntity(pairs, HTTP.UTF_8))
2. StringEntity()
JSONObject postData = new JSONObject(); postData.put("supervisor", supervisorEt.getEditableText().toString()); postData.put("content", superviseContentEt.getEditableText().toString()); postData.put("userId", signedUser.getId()); httpPost.setEntity(new StringEntity(postData.toString(), HTTP.UTF_8));可以看出,UrlEncodedFormEntity()的形式比较单一,只能是普通的键值对,局限性相对较大。
而StringEntity()的形式比较自由,只要是字符串放进去,不论格式都可以。
相关文章推荐
- Android StringEntity() 和 UrlEncodedFormEntity() 的区别
- Android StringEntity() 和 UrlEncodedFormEntity() 的区别
- Android StringEntity() 和 UrlEncodedFormEntity() 的区别
- Android StringEntity() 和 UrlEncodedFormEntity() 的区别
- Android StringEntity() 和 UrlEncodedFormEntity() 的区别
- Android中String与StringBuilder有什么区别?
- Android中String、StringBuffer和StringBuilder的区别
- java的String和android的String有什么区别?
- android String equal 和 ==的区别
- Android Editable与String的区别
- Android中String.xml: The reference to entity "timestamp" must end with the ';' delimiter
- Android中String,char,character,chasequence的区别
- Android getText(int resId) 与 getString(int resId)的区别
- android Java String 与 StringBuffer 用法区别(转载 )
- Android 字符串拼接总结 String,StringBuffer与StringBuilder的区别??
- Android开发中.toString()和String.valueOf()的区别
- java/android String和List<String>的区别
- Android/Java 中的 String, StringBuffer, StringBuilder的区别和使用
- 【Android】SQLite Cursor含义、模糊查找 String 空对象与空值的区别
- android: CharSequence和String的区别