2017-04-26 224 views
1

我收到onErrorResponse中的com.android.volley.ClientError异常。在我的代码下面。最初代码使用volley'StringRequest'工作;当我改变它使用JsonObjectRequest时,我得到了错误。我认为错误与请求参数有关。他们没有被送到服务。测试REST服务是用.NET编写的,但这不会有什么区别。Volley ClientError意外的响应代码404

private static final String ENDPOINT = "http://XXX.XXX.X.XXX/Test.App.REST/api/User/"; 

HashMap<String, String> params = new HashMap<String, String>(); 
params.put("EmployeeId", "01123"); 
params.put("Environment", "DAT"); 

CustomRequest jsonRequest = new CustomRequest 
      (Request.Method.GET, ENDPOINT, params, new Response.Listener<JSONObject>() { 
       @Override 
       public void onResponse(JSONObject response) { 
        try { 
         ControlUserResponse resp = (ControlUserResponse) gson.fromJson(response.toString(), ControlUserResponse.class); 
         respTxt.setText(resp.firstName + " -- " + resp.lastName); 
        } catch (JsonSyntaxException e) { 
         respTxt.setText(e.toString()); 
         e.printStackTrace(); 
        } 
       } 
      }, new Response.ErrorListener() { 

       @Override 
       public void onErrorResponse(VolleyError error) { 
        respTxt.setText(error.toString()); 
        error.printStackTrace(); 
       } 
      }); 

Volley.newRequestQueue(this).add(jsonRequest); 

我用的辅助类CustomRequest从这个网址 Volley JsonObjectRequest Post request not working

我可以测试下面的网址是我的机器上的浏览器工作正常,并返回正确的数据 http://XXX.XXX.X.XXX/Test.App.REST/api/User/?EmployeeId=01123&Environment=DAT

任何帮助将不胜感激。由于

异常堆栈跟踪如下:

04-26 14:48:27.180 9441-9574/test.app.resttest E/Volley: [308] BasicNetwork.performRequest: Unexpected response code 404 for http://XXX.XX.X.XXX/Test.App.REST/api/User 
04-26 14:48:27.183 9441-9441/test.app.resttest W/System.err: com.android.volley.ClientError 
04-26 14:48:27.183 9441-9441/asc.app.resttest W/System.err:  at com.android.volley.toolbox.BasicNetwork.performRequest(BasicNetwork.java:164) 
04-26 14:48:27.183 9441-9441/asc.app.resttest W/System.err:  at com.android.volley.NetworkDispatcher.run(NetworkDispatcher.java:112) 
+0

请发表上述 –

+0

错误消息看起来你只是改变了终点......有道理考虑一个404 Not Found错误 – ibrahim

回答

0

我已经改变了我的代码。现在我从REST服务得到正确的结果

Uri.Builder builder = Uri.parse(ENDPOINT).buildUpon(); 
builder.appendQueryParameter("EmployeeId", "12345555"); 
builder.appendQueryParameter("Environment", "DEV"); 

JsonObjectRequest jsonRequest = new JsonObjectRequest 
      (Request.Method.GET, builder.toString(), null, new Response.Listener<JSONObject>() { 
       @Override 
       public void onResponse(JSONObject response) { 
        try { 
         ControlUserResponse resp = (ControlUserResponse) gson.fromJson(response.toString(), ControlUserResponse.class); 
         respTxt.setText(resp.firstName + " -- " + resp.lastName); 
        } catch (JsonSyntaxException e) { 
         respTxt.setText(e.toString()); 
         e.printStackTrace(); 
        } 
       } 
      }, new Response.ErrorListener() { 
       @Override 
       public void onErrorResponse(VolleyError error) { 
        respTxt.setText(error.toString()); 
        error.printStackTrace(); 
       } 
      }); 

Volley.newRequestQueue(this).add(jsonRequest); 
+1

发布错误消息 –

+1

顺便说一句,'GsonRequest'可以在这里找到。 https://developer.android.com/training/volley/request-custom.html –

相关问题