2017-04-26 11 views
1

onErrorResponseでcom.android.volley.ClientError例外が発生します。私のコードの下に。最初のコードは、 'StringRequest'というボレーを使用して動作します。 JsonObjectRequestを使用するように変更するとエラーが発生します。私は、エラーがリクエストパラメータに関連していると思います。彼らはサービスに送られません。テストRESTサービスは.NETで書かれていますが、違いはありません。私は以下のURLをブラウザから私のマシン上で正常に動作し、どれが正しいデータ http://XXX.XXX.X.XXX/Test.App.REST/api/User/?EmployeeId=01123&Environment=DATVolley ClientError予期しない応答コード404

を返していることをテストすることができます Volley JsonObjectRequest Post request not working

このURLからヘルパークラスにCustomRequestを使用

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); 

助けが大いに評価されるでしょう。下記のおかげ

例外のスタックトレース:

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 –

関連する問題