Как мы можем обработать результат HttpResponse в Android? - PullRequest
0 голосов
/ 07 сентября 2011

Я работаю на Android. Я отправляю имя пользователя и пароль с помощью HttpPost и получаю идентификатор пользователя.

Это мой код для моей операции:

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"}]);

Заранее спасибо.

Ответы [ 3 ]

2 голосов
/ 07 сентября 2011
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
    }
} 
1 голос
/ 07 сентября 2011

Вы можете использовать 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 голос
/ 07 сентября 2011

Мне кажется, ваш ответ упакован в JSONObject. Для обработки этого ответа просто используйте пакет org.json и проанализируйте ваш ответ в json. Самый короткий способ извлечь ответ:

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

также я рекомендую не использовать метод POST, а метод GET, поскольку вы не вызываете ресурс через GET.

...