2011-09-07 47 views
0

我正在使用android。我使用HttpPost發送用戶名和密碼並獲取用戶名。我們如何處理Android中HttpResponse的結果?

這是我對我的操作代碼:

HttpClient hc = new DefaultHttpClient(); 

HttpPost post = new HttpPost("http://192.168.1.214/sample/dologin.php id="+strUID+ "&password="+strPass); 

HttpResponse rp = hc.execute(post); 

if (rp.getStatusLine().getStatusCode() == HttpStatus.SC_OK) { 
    String userID = EntityUtils.toString(rp.getEntity()); 
    Log.v("Login response", "" + userID); 
} 

這是我在DDMS

Login response(686): ([{"id":"5"}]); 

輸出,但我需要5個結果。所以我可以在我的下一個操作中使用這個結果。請告訴我該怎麼做才能從字符串中提取5([{「id」:「5」}]);

預先感謝您。

回答

1

您可以使用以下JSON是簡單的代碼..

StringBuffer sb = new StringBuffer(userID); 
String s = sb.substring(sb.indexOf("["),sb.lastIndexOf("]")+1); 
JSONArray ja = new JSONArray(s); 
JSONObject jo = new JSONObject(); 
jo = (ja.getJSONObject(0)); 
String id = jo.getString("id"); 

現在你可以使用id變量..

1

我好像你的答案被打包成一個JSONObject。 要處理此響應,只需使用org.json包並將您的答案解析爲json。 提取答案的捷徑是:

JSONObject myJson = new JSONObject(userID); 
String myID = myJson.get("id"); 
// or myJson.getString("id"); 

還我recomand不使用POST方法,但GET方法你不是通過調用得到的ressource。

2
public void postData(String strUID,String strPass) { 
    // Create a new HttpClient and Post Header 
    HttpClient httpclient = new DefaultHttpClient(); 
    HttpPost httppost = new HttpPost("http://192.168.1.214/sample/dologin.php"); 

    try { 
     // Add your data 
     List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2); 
     nameValuePairs.add(new BasicNameValuePair("id",strUID)); 
     nameValuePairs.add(new BasicNameValuePair("password",strPass)); 
     httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 

     // Execute HTTP Post Request 
     ResponseHandler<String> responseHandler=new BasicResponseHandler(); 
     String responseBody = httpclient.execute(httppost, responseHandler); 
     JSONObject response=new JSONObject(responseBody); 

     response.get('id'); 
    } catch (ClientProtocolException e) { 
     // TODO Auto-generated catch block 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
    } 
} 
+0

我想你的幫助將是有意義的我。但是你的這一行代碼正在創建錯誤response.get('id');這是錯誤「無效字符常量」。所以請建議我該如何解決此錯誤? –

+0

before response.get('id'); make repsone = response.getJSONObject(0); – confucius