2017-05-04 110 views
1

我在POSTMAN中測試了我的REST服務,它工作正常。我應該得到這樣的東西:Android凌空。無法從工作的Rest API獲取JSON響應

{ 
    "msg": "the user was successfully created" 
    ... 
} 

但在我的android應用程序中調試無法找到響應。我錯過了什麼,或者我做錯了什麼?謝謝!

private void registerUser(final String firstName, final String lastName, 
          final String email, final String password) { 

    pDialog.setMessage("Registering ..."); 
    showDialog(); 

    try { 
     RequestQueue requestQueue = Volley.newRequestQueue(this); 
     JSONObject jsonBody = new JSONObject(); 
     jsonBody.put("first_name", firstName); 
     jsonBody.put("last_name", lastName); 
     jsonBody.put("email", email); 
     jsonBody.put("password", password); 

     final String requestBody = jsonBody.toString(); 

     StringRequest stringRequest = new StringRequest(Request.Method.POST, AppConfig.URL_REGISTER, new Response.Listener<String>() { 
      @Override 
      public void onResponse(String response) { 
       Log.d(TAG, "Register Response: " + response); 
       hideDialog(); 
       ... 
      } 
     }, new Response.ErrorListener() { 
      @Override 
      public void onErrorResponse(VolleyError error) { 
       Log.e("VOLLEY", error.toString()); 
      } 
     }) { 
      @Override 
      public String getBodyContentType() { 
       return "application/json"; 
      } 

      @Override 
      public byte[] getBody() throws AuthFailureError { 
       try { 
        return requestBody == null ? null : requestBody.getBytes("utf-8"); 
       } catch (UnsupportedEncodingException uee) { 
        VolleyLog.wtf("Unsupported Encoding while trying to get the bytes of %s using %s", requestBody, "utf-8"); 
        return null; 
       } 
      } 

      @Override 
      protected Response<String> parseNetworkResponse(NetworkResponse response) { 
       String responseString = ""; 
       if (response != null) { 
        responseString = String.valueOf(response.statusCode); 

       } 
       return Response.success(responseString, HttpHeaderParser.parseCacheHeaders(response)); 
      } 
     }; 

     requestQueue.add(stringRequest); 
    } catch (JSONException e) { 
     e.printStackTrace(); 
    } 

在調試時,塊

@Override 
      protected Response<String> parseNetworkResponse(NetworkResponse response) { 
       String responseString = ""; 
       if (response != null) { 
        responseString = String.valueOf(response.statusCode); 

       } 
       return Response.success(responseString, HttpHeaderParser.parseCacheHeaders(response)); 
      } 

顯示此:enter image description here

我沒有JSON響應。

回答

1

你沒有看到任何json數據,因爲你沒有從你身邊產生任何json響應。您在Postman上看到的回覆來自api服務。你的程序有成功迴應(即狀態代碼201),這是你唯一要發送回客戶端的東西。

if (response != null) { 
       responseString = String.valueOf(response.statusCode); 

      } 

您必須操縱響應(在parseNetworkResponse模塊中)並將您想要的相關信息轉發給客戶端。

+0

有關如何做到這一點的任何鏈接? –

+0

在響應變量中我唯一的信息是狀態碼。你可以在上面的img中看到它。 –

+0

它應該很簡單。轉換整個響應而不是response.statusCode:類似於responseString = String.valueOf(response) – Gi1ber7