Volley Post Request ClientError - PullRequest
       39

Volley Post Request ClientError

0 голосов
/ 08 октября 2019

Я пытаюсь отправить запрос POST с помощью Volley на мой сервер, но он не работает. Мои GET-запросы работают нормально, и я также использовал почтальон, чтобы проверить, правильно ли работает моя служба отдыха на сервере.

Я всегда получаю ClientError:

com.android.volley.toolbox.BasicNetwork.performRequest(BasicNetwork.java:190)
com.android.volley.NetworkDispatcher.processRequest(NetworkDispatcher.java:120)
com.android.volley.NetworkDispatcher.run(NetworkDispatcher.java:87)

Я видел много разных решений здесь, но ни одно из них не помогло для моей проблемы. Мой запрос StringRequest выглядит так:

                                StringRequest addOrder = new StringRequest(
                                        Request.Method.POST,
                                        "http://myservice/rest/order",
                                        new Response.Listener<String>() {
                                            @Override
                                            public void onResponse(String response) {
                                                String success =  "DONE";
                                            }
                                        },
                                        new Response.ErrorListener() {
                                            @Override
                                            public void onErrorResponse(VolleyError error) {
                                                String test = error.toString();
                                                //Log.e("Rest Response", error.toString());
                                            }
                                        })
                                {
                                    @Override
                                    public String getBodyContentType() {
                                        return "application/json; charset=utf-8";
                                    }

                                    @Override
                                    public byte[] getBody() {
                                        ByteArrayOutputStream bos = new ByteArrayOutputStream();
                                        try{
                                            ObjectOutputStream oos = new ObjectOutputStream(bos);
                                            oos.writeObject(clickedCocktail);
                                            oos.flush();
                                        }
                                        catch(IOException ioe){
                                            //Do Stuff by Exception
                                            String exStr = ioe.getMessage();
                                        }
                                        return bos.toByteArray();
                                    }
                                };
                                requestQueue.add(addOrder);
                            }

1 Ответ

0 голосов
/ 09 октября 2019

Обычно ответ клиента на ошибку вызван отправкой неверных параметров с URL. Пожалуйста, проверьте каждый параметр с правописанием и убедитесь, что ответ получен в виде строки или объекта.

JsonObjectRequest jsonObjReq = new JsonObjectRequest(Request.Method.POST,
            ApplicationData.POST_URL, new JSONObject(postParams),
            new com.android.volley.Response.Listener<JSONObject>() {

                @Override
                public void onResponse(JSONObject response) {
                    //Log.d("TAG", response.toString());
                    try {
                        //Toast.makeText(mContext, response.getString("message"), Toast.LENGTH_LONG).show();
                        Toast.makeText(mContext, "Thank you for your post", Toast.LENGTH_LONG).show();

                        if (response.getBoolean("status")) {
                            pDialog.dismiss();
                            finish();
                        }
                    } catch (JSONException e) {
                        Log.e("TAG", e.toString());
                    }
                    pDialog.dismiss();
                }
            }, new com.android.volley.Response.ErrorListener() {

        @Override
        public void onErrorResponse(VolleyError error) {
            //VolleyLog.d("TAG", "Error: " + error.getMessage());
            pDialog.dismiss();
            if (isNetworkProblem(error)) {
                Toast.makeText(mContext, "Internet Problem", Toast.LENGTH_SHORT).show();

            }
        }
    }) {

        @Override
        public String getBodyContentType() {
            return "application/json; charset=utf-8";
        }

        @Override
        public Map<String, String> getHeaders() throws AuthFailureError {
            return getRequestHeaders();
        }
    };

    jsonObjReq.setRetryPolicy(new DefaultRetryPolicy(8000, 0, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
    // Adding request to request queue
    AppController.getInstance().addToRequestQueue(jsonObjReq, tag_json_obj);

Вы можете ссылаться на этот код

...