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

Android HttpPost数据中文乱码的解决方案

2012-06-20 16:42 351 查看
在项目中,以HttpPost方式向服务器上提交数据时,服务器上中文竟然显示乱码,针对该种情况证明解决呢?其实,这样的问题,在架构的时候,就应该考虑到,如果牵扯到各个不同的平台应用,尽量统一使用UTF8编码,可以少很多麻烦。当然在post数据的时候,可以指定编码,请参阅下面的函数:

01
public
Map<String, Object> CreateNote(
int
albumId, String title,
02
String remark) {
03
String noteId =
""
;
04
Map<String, Object> map =
new

HashMap<String, Object>();
05
try
{
06
HttpParams parms =
new

BasicHttpParams();
07
parms.setParameter(
"charset"
, HTTP.UTF_8);
08
HttpConnectionParams.setConnectionTimeout(parms,
8

*
1000
);
09
HttpConnectionParams.setSoTimeout(parms,
8

*
1000
);
10
HttpClient httpclient =
new

DefaultHttpClient(parms);
11
HttpPost httppost =
new

HttpPost(ConfigHelper.CreateUri);
12
httppost.addHeader(
"Authorization"
, mToken);
13
httppost.addHeader(
"Content-Type"
,
"application/json"
);
14
httppost.addHeader(
"charset"
, HTTP.UTF_8);
15
16
JSONObject obj =
new

JSONObject();
17
obj.put(
"title"
, title);
18
obj.put(
"categoryId"
, mCategoryId);
19
obj.put(
"sourceUrl"
, GetSourceUri());
20
21
JSONArray arr =
new

JSONArray();
22
23
arr.put(DateFormat.format(
"yyyyMM"
,Calendar.getInstance(Locale.CHINA)));   
24
obj.put(
"tags"
, arr);
25
obj.put(
"content"
, remark);
26
httppost.setEntity(
new
StringEntity(obj.toString(), HTTP.UTF_8));
27
HttpResponse response;
28
response = httpclient.execute(httppost);
29
int
code = response.getStatusLine().getStatusCode();
30
if
(code == ConstanDefine.ErrorCode.SuccOfHttpStatusCode) {
31
String rev = EntityUtils.toString(response.getEntity());
32
obj =
new

JSONObject(rev);
33
noteId = obj.getString(
"id"
);
34
map.put(
"return_code"
,
"0"
);
35
map.put(
"content"
, rev);   
36
}
37
}

catch
(Exception e) {
38
if
(map.containsKey(
"return_code"
)) {
39
map.remove(
"return_code"
);
40
}
41
map.put(
"return_code"
,
"1"
);
42
}
43
return
map;
44
}
转自:http://www.open-open.com/lib/view/open1328168459890.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: