简体   繁体   English

如何修复“Volley:[15771] BasicNetwork.performRequest:Android 中的意外响应代码 404?

[英]How to fix "Volley: [15771] BasicNetwork.performRequest: Unexpected response code 404 in android?

The API is developed in Wordpress with POST method. API 是在 Wordpress 中使用 POST 方法开发的。 API is working fine in POSTMAN and iOS(swift). API 在 POSTMAN 和 iOS(swift) 中运行良好。 I am getting response in POSTMAN and my colleague iOS developer also getting response.我在 POSTMAN 中收到回复,我的同事 iOS 开发人员也收到回复。

But in Android I am getting 404 error in Android Studio.但在 Android 中,我在 Android Studio 中收到404 错误 I am trying to resolve with different Volley request like StringRequest, JSONObjectRequest and HttpURLConnection with AsyncTask.我正在尝试使用 AsyncTask 解决不同的 Volley 请求,例如 StringRequest、JSONObjectRequest 和 HttpURLConnection。 But getting only 404 error.但只收到 404 错误。 Any one tell me what is the exact issue?谁能告诉我确切的问题是什么?

Below is my code.下面是我的代码。

private void RegisterUser(){
        final ProgressDialog progressDialog = new ProgressDialog(RegistrationActivity.this);
        progressDialog.setCancelable(false);
        progressDialog.setMessage("Please wait...");
        progressDialog.show();

        StringRequest postrequest = new StringRequest(Request.Method.POST, Urls.REGISTER, new Response.Listener<String>() {
            @Override
            public void onResponse(String response) {
                try {
                    progressDialog.dismiss();
                    Log.e("res","==> "+response);
                }
                catch (Exception e){e.printStackTrace();}
            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {progressDialog.dismiss();error.getLocalizedMessage();}
        }) {
            @Override
            protected Map<String, String> getParams() {
                Map<String, String> params = new HashMap<String, String>();
                params.put("username", "khushbu");
                params.put("email", "kh@test.com");
                params.put("user_pass", "test@123");
                params.put("display_name", "khushbu");
                params.put("company_name", "");
                params.put("nature_of_business", "");
                params.put("country", "");
                params.put("nonce", "12e099a946");
                params.put("notify", "both");
                params.put("insecure", "cool");

                Log.e("params","==> " + params);
                return params;
            }
        };
        FlawlessApplication.getInstance().addToRequestQueue(postrequest);
    }

I also tried with adding headers but can't get any solution.我也尝试添加标头但无法获得任何解决方案。

@Override
            public Map<String, String> getHeaders() throws AuthFailureError {
                Map<String, String>  params = new HashMap<String, String>();
                params.put("content-type", "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW");
                params.put("cache-control", "no-cache");

                return params;
            }

Thank you in advance.先感谢您。

final ProgressDialog progressDialog;
progressDialog = ProgressDialog.show(mContext, "", "Loading..");
progressDialog.setCancelable(false);
progressDialog.show();

RequestQueue requestQueue = Volley.newRequestQueue(mContext);
HashMap<String, String> params = new HashMap<>();
params.put("username", "khushbu");
params.put("email", "kh@test.com");
params.put("user_pass", "test@123");
params.put("display_name", "khushbu");
params.put("company_name", "");
params.put("nature_of_business", "");
params.put("country", "");
params.put("nonce", "12e099a946");
params.put("notify", "both");
params.put("insecure", "cool");
Log.e("params","==> " + params);

JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(
    Request.Method.POST,
    Urls.REGISTER,
    new JSONObject(params),
    new Response.Listener<JSONObject>() {
        @Override
        public void onResponse(JSONObject response) {
            try {
                progressDialog.dismiss();
            } catch (Exception e) {
                e.printStackTrace();
            }
            try {
                Log.e("res","==> "+response);
            } catch (JSONException e) {
                e.printStackTrace();
            }
        }
    },
    new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {
            // Do something when error occurred
            try {
                progressDialog.dismiss();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
) {
    @Override
    public Map<String, String> getHeaders() throws AuthFailureError {
        HashMap<String, String> headerParams = new HashMap<>();
        //add header params if having
        headerParams.put("KEY", "value");
        return headerParams;
    }
};
// Add JsonObjectRequest to the RequestQueue
requestQueue.add(jsonObjectRequest);

In my case.就我而言。 I was using the http in my API so after changing to https it worked for me.我在我的 API 中使用了 http,所以在更改为 https 后它对我有用。 and in postman no matter it http or https it works the same.在邮递员中,无论是 http 还是 https,它的工作原理都是一样的。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM