web-dev-qa-db-ja.com

Android Volley BasicNetwork.performRequest()予期しない応答コード404

ボレーライブラリを使用してネットワークリクエストを作成しているときにこのエラーが発生します。これらのリンクをたどります Android Volley-BasicNetwork.performRequest:Unexpected response code 4 and nexpected response code 404 volley しかし、私の場合はどれも機能していません。これが私のリクエストコードです

 StringRequest stringRequest = new StringRequest(Request.Method.POST,AppConstants.LOG_IN_API , new Response.Listener<String>() {
            @Override
            public void onResponse(String response) {
                Log.d("TAG", "Login Response: " + response.toString());
                try {
                    JSONObject jsonObject = new JSONObject(response);
                   Log.v("USerid",""+jsonObject.getInt("userid"));

                } catch (JSONException e) {
                    e.printStackTrace();
                }

            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError volleyError) {
                System.out.println("volley Error ................."+volleyError);
            }
        }) {
            @Override
            protected Map<String, String> getParams() throws AuthFailureError {
               Log.v("getparams","Is called");
                Map<String, String> params = new HashMap<String, String>();
                params.put(AppConstants.USER_ID, "[email protected]");
                params.put(AppConstants.PASSWORD, "123456");
                return params;
            }


            @Override
            public Map<String, String> getHeaders() throws AuthFailureError {
                HashMap<String, String> headers = new HashMap<String, String>();

                headers.put("Content-Type", "application/json; charset=utf-8");
                return headers;
            }

        };

        Log.v("Request",""+stringRequest);

        AppController.getInstance().addToRequestQueue(stringRequest);

    }

私のコードのどこが間違っているのか教えてくれる人はいますか?どんな助けもありがたいです。

5
Sandeep dhiman

通常、この応答は、URLで誤ったパラメーターを送信することによって発生します。スペルを使用してすべてのパラメーターを確認し、応答が文字列で取得されたかオブジェクトで取得されたかを確認してください。 Content-typeも確認してください。

これがお役に立てば幸いです。
ありがとうございました。

6
Priya Darshani

GETが機能していてPOST=が機能していない場合、404応答が返されます。これは、投稿リクエストをサーバーがルーティングできないことを意味します。同じ問題があり、解決策は簡単でした。I NodeJSでサーバーを作成しました処理しませんでしたPOST自分のURLに対するアクション。getでテストしてみましたが、すべて問題ありませんでした。

Expressを使用したノードサーバーでの私のテスト方法は次のとおりです。

app.get('/data/helloWorld', routeData.helloWorld);

そしてもちろんpostメソッドのルートを追加する必要があります

app.post('/data/helloWorld', routeData.helloWorld);
4
Daniel Więcek

StringRequestのローカルIPが間違っている可能性があります。確認してください。IPを変更して問題を解決しました。

私のIPは:

private static final String ROOT_URL="http://192.168.0.101/Android/functions";
public static final String URL_REGISTER = ROOT_URL+"/registerUser.php";

後で、エミュレータとブラウザにこのIPを貼り付けると、機能しないことがわかりました。私はこの問題に一日中行き詰っていました。次に、ルートフォルダー「Android」をIPから削除し、正常に機能しました。

だから私のIPは今です:(削除されたAndroidフォルダ)

private static final String ROOT_URL="http://192.168.0.101/functions";
public static final String URL_REGISTER = ROOT_URL+"/registerUser.php";

IPはブラウザとエミュレータの両方で機能している必要があることに注意してください。その場合は、プロジェクトでそのIPを使用します。

1
Devender Gupta

getHeaders()を削除すると、問題が解決しました。

1
M. Chavoshi

誤って、POSTの代わりにGETリクエストを入れましたが、それを変更して、404応答の問題を解決しました。

0
Pavan Nagaraja

このコードでAPIを試して、応答を確認してください。

 StringRequest stringRequest = new StringRequest(Request.Method.POST, ApiURL.LOGIN_URL,
            new Response.Listener<String>() {
                @Override
                public void onResponse(String response) {
                    Log.e("Response", response); 
                }
            },
            new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {
                    Log.e("Response", error.toString());
                }
            }) {
        @Override
        protected Map<String, String> getParams() {
            Map<String, String> params = new HashMap<String, String>();
            params.put("email", email.getText().toString());
            params.put("password", password.getText().toString());
            return params;
        }

        @Override
        public Map<String, String> getHeaders() throws AuthFailureError {
            Map<String, String> params = new HashMap<String, String>();
            params.put("Content-Type", "application/x-www-form-urlencoded");
            return params;
        }
    };

    RequestQueue requestQueue = Volley.newRequestQueue(this);
    requestQueue.add(stringRequest);

}
0
Priya Darshani