2017-05-04 118 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