android 标题添加删除,android – 使用标题和Parametes Volley删除请求

嗨我想使用标题和身体参数使用Volley向服务器发送删除请求.但我无法成功发送请求

我试过的

JSONObject jsonbObjj = new JSONObject();

try {

jsonbObjj.put("nombre", Integer.parseInt(no_of_addition

.getText().toString()));

jsonbObjj.put("cru", crue);

jsonbObjj.put("annee", 2010);

} catch (JSONException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

VolleyRequest mVolleyRequest = new VolleyRequest(

Method.DELETE, url, jsonbObjj,

new Listener() {

@Override

public void onResponse(JSONObject jsonObject) {

// TODO Auto-generated method stub

if (pDialog != null) {

pDialog.dismiss();

}

Log.e("Server Response", "response = "

+ jsonObject.toString());

}

}, new ErrorListener() {

@Override

public void one rrorResponse(VolleyError arg0) {

// TODO Auto-generated method stub

if (pDialog != null) {

pDialog.dismiss();

}

Log.e("Error Response",

"Error " + arg0.getMessage());

Log.e("Error Response",

"Error = " + arg0.getCause());

}

}, mUserSession.getUserEmail(), mUserSession

.getUserPassword(), false);

ApplicationController.getInstance().addToRequestQueue(

mVolleyRequest, "deleteRequest");

这是我的VolleyRequest请求类

public class VolleyRequest extends JsonObjectRequest {

String email, pass;

boolean saveCookeis;

public VolleyRequest(int method, String url, JSONObject jsonRequest,

Listener listener, ErrorListener errorListener,

String email, String pass, boolean saveCookie) {

super(method, url, jsonRequest, listener, errorListener);

// TODO Auto-generated constructor stub

this.email = email;

this.pass = pass;

this.saveCookeis = saveCookie;

}

public VolleyRequest(int method, String url, JSONObject jsonRequest,

Listener listener, ErrorListener errorListener) {

super(Method.POST, url, jsonRequest, listener, errorListener);

// TODO Auto-generated constructor stub

}

@Override

public Map getHeaders() throws AuthFailureError {

// TODO Auto-generated method stub

HashMap params = new HashMap();

String auth = "";

try {

auth = android.util.Base64.encodeToString(

(this.email + ":" + this.pass).getBytes("UTF-8"),

android.util.Base64.DEFAULT);

} catch (UnsupportedEncodingException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

params.put("Authorization", auth);

return params;

}

@Override

protected Response parseNetworkResponse(NetworkResponse response) {

// TODO Auto-generated method stub

if (saveCookeis) {

try {

String jsonString = new String(response.data,

HttpHeaderParser.parseCharset(response.headers));

ApplicationController.getInstance().checkSessionCookie(

response.headers);

return Response.success(new JSONObject(jsonString),

HttpHeaderParser.parseCacheHeaders(response));

} catch (UnsupportedEncodingException e) {

return Response.error(new ParseError(e));

} catch (JSONException je) {

return Response.error(new ParseError(je));

}

}

return super.parseNetworkResponse(response);

}

}

当我尝试这个代码我得到400响应代码错误请让我知道,如果有人可以帮助我…我做错了什么.谢谢

这里是我测试的删除Api的屏幕截图,它的工作正常.

422dd40f46f8deb461d955ee3d49a0c5.png

d9ccd2353a7c21f9972af1631d3d8022.png

解决方法:

更新:

我已将我的工作示例项目发布到GitHub以修复java.net.ProtocolException:DELETE不支持写入,请看一下.

您的应用程序有400个错误代码,因为尚未使用DELETE请求发送数据正文.

case Method.DELETE:

connection.setRequestMethod("DELETE");

break;

case Method.POST:

connection.setRequestMethod("POST");

addBodyIfExists(connection, request);

break;

所以我们可以看到DELETE请求忽略了主体数据.有一个解决方法,就是你创建一个CustomHurlStack类(复制上面的所有HurlStack内容),只修改如下:

case Request.Method.DELETE:

connection.setRequestMethod("DELETE");

addBodyIfExists(connection, request);

break;

然后,在您的活动中,致电:

CustomHurlStack customHurlStack = new CustomHurlStack();

RequestQueue queue = Volley.newRequestQueue(this, customHurlStack);

请注意,此解决方法仅适用于API21(API20我尚未测试).从API19-,java.net.ProtocolException:DELETE不支持写入将被抛出.

P / S:如果您的应用compileSdkVersion 23,则在build.gradle文件中添加useLibrary’org.apache.http.legacy’,并在创建CustomHurlStack类时出错.

希望这可以帮助!

标签:android,sql-delete,android-volley,jsonobject

来源: https://codeday.me/bug/20190516/1116599.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值