Android 截击后请求客户端错误
我正试图向我的服务器发送一个带有截击的POST请求,但它不起作用。 我的GET请求工作正常,我还使用postman检查服务器上的rest服务是否正常工作 我总是收到一封电子邮件: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
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。但是谢谢你的帮助