2015-02-06 50 views
2

我正在使用排雷庫進行Android和jsonObject中的網絡調用,以便從服務器發送和獲取值。如何在凌亂庫中讀取響應頭的狀態碼和響應正文Android

在我的情況下,如果我發送正確的值,它會返回正確的json對象,但是如果我向服務器發送錯誤的輸入,它會返回401作爲請求標頭和響應正文並顯示錯誤消息。但是這並沒有顯示onResponse成功方法。

這裏是我的代碼

private void makeLoginReq() { 
    showProgressDialog(); 
    Map<String, String> postParam = new HashMap<String, String>(); 
    postParam.put("un", user_name.getText().toString()); 
    postParam.put("p", password.getText().toString()); 

    JsonObjectRequest jsonObjReq = new JsonObjectRequest(Method.POST, 
      Server.URL+Server.FUNC_LOGIN, new JSONObject(postParam), 
      new Response.Listener<JSONObject>() { 

       @Override 
       public void onResponse(JSONObject response) { 
        Log.d("TAG", response.toString()); 
        hideProgressDialog(); 
        try { 
         if("0".equalsIgnoreCase(response.getString("status"))) 
         { 
          startActivity(new Intent(ActivityLogin.this,ActivityHome.class)); 
         }else if("1".equalsIgnoreCase(response.getString("status"))) 
         { 

         } 
        } catch (JSONException e) { 
         // TODO Auto-generated catch block 
         e.printStackTrace(); 
        } 
       } 
      }, new Response.ErrorListener() { 

       @Override 
       public void onErrorResponse(VolleyError error) { 
        VolleyLog.d("TAG", "Error: " + error.networkResponse.statusCode); 
        hideProgressDialog(); 
        Crouton.makeText(ActivityLogin.this, "Server Error Try again", Style.ALERT).show(); 
       } 
      }) { 

     /** 
     * Passing some request headers 
     * */ 
     @Override 
     public Map<String, String> getHeaders() throws AuthFailureError { 
      HashMap<String, String> headers = new HashMap<String, String>(); 
      headers.put("Content-Type", "application/json"); 
      headers.put("charset", "utf-8"); 
      return headers; 
     } 

    }; 

    // Adding request to request queue 
    AppController.getInstance().addToRequestQueue(jsonObjReq, tag_json_obj); 
} 

我需要的是讓在公共無效onResponse(JSONObject的響應)JSON響應{}方法。

任何人都可以幫助我解決這個問題嗎?

回答

0

VolleyError有很多子類,你可以通過instanceOf檢查來檢查錯誤類型。

+0

服務器的返回值僅爲JSON格式。但我沒有收到Onsuccess方法 – John 2015-02-06 11:01:34

+0

,但您更改了回覆標題,我想您會在onErrorResponse – cn123h 2015-02-06 11:02:27

+0

中得到回覆,並且非常感謝您的回答。但是這是可能的從錯誤中獲取JSONObject:我的意思是我怎麼能從onResponse得到響應體錯誤方法 – John 2015-02-06 11:08:10