Android 截击后请求客户端错误

Android 截击后请求客户端错误,android,post,request,android-volley,Android,Post,Request,Android Volley,我正试图向我的服务器发送一个带有截击的POST请求,但它不起作用。 我的GET请求工作正常,我还使用postman检查服务器上的rest服务是否正常工作 我总是收到一封电子邮件: com.android.volley.toolbox.BasicNetwork.performRequest(BasicNetwork.java:190) com.android.volley.NetworkDispatcher.processRequest(NetworkDispatcher.java:120) co

我正试图向我的服务器发送一个带有截击的POST请求,但它不起作用。 我的GET请求工作正常,我还使用postman检查服务器上的rest服务是否正常工作

我总是收到一封电子邮件:

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 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);
                            }
StringRequest addOrder=新的StringRequest(
Request.Method.POST,
"http://myservice/rest/order",
新的Response.Listener(){
@凌驾
公共void onResponse(字符串响应){
字符串success=“DONE”;
}
},
新的Response.ErrorListener(){
@凌驾
公共无效onErrorResponse(截击错误){
字符串测试=error.toString();
//Log.e(“Rest响应”,error.toString());
}
})
{
@凌驾
公共字符串getBodyContentType(){
返回“application/json;charset=utf-8”;
}
@凌驾
公共字节[]getBody(){
ByteArrayOutputStream bos=新建ByteArrayOutputStream();
试一试{
ObjectOutputStream oos=新的ObjectOutputStream(bos);
oos.writeObject(点击鸡尾酒);
oos.flush();
}
捕获(ioe异常ioe){
//破例做事
字符串exStr=ioe.getMessage();
}
返回bos.toByteArray();
}
};
requestQueue.add(addOrder);
}

通常,客户端错误响应是由发送错误的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);
JsonObjectRequest-jsonObjReq=新的JsonObjectRequest(Request.Method.POST,
ApplicationData.POST_URL,新JSONObject(postParams),
新建com.android.volley.Response.Listener(){
@凌驾
公共void onResponse(JSONObject响应){
//Log.d(“TAG”,response.toString());
试一试{
//Toast.makeText(mContext,response.getString(“消息”),Toast.LENGTH_LONG.show();
Toast.makeText(mContext,“谢谢你的帖子”,Toast.LENGTH_LONG.show();
if(response.getBoolean(“status”)){
pDialog.disclose();
完成();
}
}捕获(JSONException e){
Log.e(“TAG”,e.toString());
}
pDialog.disclose();
}
},new com.android.volley.Response.ErrorListener(){
@凌驾
公共无效onErrorResponse(截击错误){
//d(“TAG”,“Error:+Error.getMessage());
pDialog.disclose();
如果(isNetworkProblem(错误)){
Toast.makeText(mContext,“互联网问题”,Toast.LENGTH_SHORT.show();
}
}
}) {
@凌驾
公共字符串getBodyContentType(){
返回“application/json;charset=utf-8”;
}
@凌驾
公共映射getHeaders()引发AuthFailureError{
返回getRequestHeaders();
}
};
jsonObjReq.setRetryPolicy(新的DefaultRetryPolicy(8000,0,DefaultRetryPolicy.DEFAULT\u BACKOFF\u MULT));
//将请求添加到请求队列
AppController.getInstance().addToRequestQueue(jsonObjReq,tag_json_obj);

您可以参考此代码

向您展示一些服务器方法的代码是否有帮助?谢谢,我已经解决了。。问题在于设置requestbody的部分。我将其更改为将对象设置为jsonobject,然后将字符串发送到服务器,它就工作了。删除请求的问题是忽略了requestbody。但是谢谢你的帮助