程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> android-Android 中傳遞 json 的問題

android-Android 中傳遞 json 的問題

編輯:編程綜合問答
Android 中傳遞 json 的問題

我在開發一個程序,在 webpage 上使用jquery。

$.post(url, {param: paramstring}, function(result){});

根據參數結構,Paramstring 是一個 json字符串,如:{"action":"get","username":"username"}
現在我想在android中運行,再在頁面上添加兩個textview 來輸入用戶名和密碼。也有一個注冊按鈕。按鈕監聽程序:

EditText et1 = (EditText)findViewById(R.id.username);
String user = et1.getText().toString();
EditText et2 = (EditText)findViewById(R.id.pass);
String password = et2.getText().toString();
// the password should upload after MD5 encryption. this is encryption method. the result is the same with js encryption.
String password_md5 = toMd5(password.getBytes());   
Log.d(TAG, user+"-"+password+"-"+password_md5);
try {
HttpPost request = new HttpPost(URL);
JSONObject params = new JSONObject();
params.put("action", "get");
params.put("result", "user");
params.put("category", "base");
params.put("username", user);
params.put("password", password_md5);

List<BasicNameValuePair> sendData = new ArrayList<BasicNameValuePair>();
sendData.add(new BasicNameValuePair("param", params.toString()));

System.out.println(params.toString());

request.setEntity(new UrlEncodedFormEntity(sendData,"utf-8"));
System.out.println(EntityUtils.toString(request.getEntity()));

HttpResponse response= new DefaultHttpClient().execute(request);
String retSrc = EntityUtils.toString(response.getEntity()); 

System.out.println(retSrc);

} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
} 

上面的代碼返回數據顯示登錄錯誤,我覺得是因為 json 結構的問題。{param:paramstr} in $.post()方法是一個map。我改了好幾次還是錯誤的。
什麼問題呢?

最佳回答:


你應該分別傳遞每個參數,不需要一個 json 結構。 jQuery 使用的 JSON 結構只是 $.post() 方法中一個可變數目的參數。
把你代碼中的這部分:

params.put("action", "get");
params.put("result", "user");
params.put("category", "base");
params.put("username", user);
params.put("password", password_md5);

List<BasicNameValuePair> sendData = new ArrayList<BasicNameValuePair>();
sendData.add(new BasicNameValuePair("param", params.toString()));

改為:

List<BasicNameValuePair> sendData = new ArrayList<BasicNameValuePair>();
sendData.add(new BasicNameValuePair("action", "get"));
sendData.add(new BasicNameValuePair("result", "user"));
sendData.add(new BasicNameValuePair("category", "base"));
sendData.add(new BasicNameValuePair("username", user));
sendData.add(new BasicNameValuePair("password", password_md5));

用sendData list 取代 JSON 對象。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved