大佬教程收集整理的这篇文章主要介绍了android – Volley – 如何发送DELETE请求参数?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
问题是在com.android.volley.toolBox.httpClientStack.java中实现createhttprequest方法,只有在请求方法为POST,PUT或PATCH时才会添加该主体.
/** * Creates the appropriate subclass of httpUrirequest for passed in request. */ @SuppressWarnings("deprecation") /* protected */ static httpUrirequest createhttprequest(request<?> request,Map<String,String> additionalHeaders) throws AuthFailureError { switch (request.getmethod()) { case Method.DEPRECATED_GET_OR_POST: { // This is the deprecated way that needs to be handled for BACkWARDs compatibility. // If the request's post body is null,then the assumption is that the request is // GET. Otherwise,it is assumed that the request is a POST. byte[] postBody = request.getPostBody(); if (postBody != null) { httpPost postrequest = new httpPost(request.getUrl()); postrequest.addHeader(HEADER_CONTENT_TYPE,request.getPostBodyContentType()); httpentity entity; entity = new ByteArrayEntity(postBody); postrequest.setEntity(entity); return postrequest; } else { return new httpGet(request.getUrl()); } } case Method.GET: return new httpGet(request.getUrl()); case Method.deletE: return new httpdelete(request.getUrl()); case Method.POST: { httpPost postrequest = new httpPost(request.getUrl()); postrequest.addHeader(HEADER_CONTENT_TYPE,request.getBodyContentType()); setEntityIfNonEmptyBody(postrequest,request); return postrequest; } case Method.PUT: { httpPut putrequest = new httpPut(request.getUrl()); putrequest.addHeader(HEADER_CONTENT_TYPE,request.getBodyContentType()); setEntityIfNonEmptyBody(putrequest,request); return putrequest; } case Method.HEAD: return new httpHead(request.getUrl()); case Method.oPTIONS: return new httpOptions(request.getUrl()); case Method.TRACE: return new httpTrace(request.getUrl()); case Method.PATCH: { httpPatch patchrequest = new httpPatch(request.getUrl()); patchrequest.addHeader(HEADER_CONTENT_TYPE,request.getBodyContentType()); setEntityIfNonEmptyBody(patchrequest,request); return patchrequest; } default: throw new IllegalStateException("UnkNown request method."); } }
所以你必须使用自己的httpStack.java实现,或者你重写httpClientStack类.
requestQueue requestQueue = Volley.newrequestQueue(sContext);
至
String userAgent = "volley/0"; try { String packagename = getContext().getPackagename(); PackageInfo info = getContext().getPackageManager().getPackageInfo(packagename,0); userAgent = packagename + "/" + info.versionCode; } catch (PackageManager.NameNotFoundException E) {} httpStack httpStack = new OwnhttpClientStack(@L_874_19@.newInstance(userAgent)); requestQueue requesQueue = Volley.newrequestQueue(sContext,httpStack);
并编写您自己的httpClientStack实现,您可以在createhttprequest()方法中更改“Method.POST:”的大小写.您还必须创建一个像“Ownhttpdelete”这样的对象,作为httpentityEnclosingrequestBase的扩展,使用方法setEntityIfNonEmptyBody().
public class OwnhttpClientStack extends com.android.volley.toolBox.httpClientStack { private final static String HEADER_CONTENT_TYPE = "Content-Type"; public OwnhttpClientStack(httpClient client) { super(client); } @Override public httpResponse performrequest(request<?> request,String> additionalHeaders) throws IOException,AuthFailureError { httpUrirequest httprequest = createhttprequest(request,additionalHeaders); addHeaders(httprequest,request.getHeaders()); onPreparerequest(httprequest); httpParams httpParams = httprequest.getParams(); int timeoutms = request.getTimeoutms(); // TODO: Reevaluate this connection timeout based on more wide-scale // data collection and possibly different for wifi vs. 3G. httpconnectionParams.setConnectionTimeout(httpParams,5000); httpconnectionParams.setSoTimeout(httpParams,timeoutms); return mClient.execute(httprequest); } private static void addHeaders(httpUrirequest httprequest,String> headers) { for (String key : headers.keySet()) { httprequest.setHeader(key,headers.get(key)); } } static httpUrirequest createhttprequest(request<?> request,String> additionalHeaders) throws AuthFailureError { switch (request.getmethod()) { case request.Method.DEPRECATED_GET_OR_POST: { byte[] postBody = request.getPostBody(); if (postBody != null) { httpPost postrequest = new httpPost(request.getUrl()); postrequest.addHeader(HEADER_CONTENT_TYPE,request.getPostBodyContentType()); httpentity entity; entity = new ByteArrayEntity(postBody); postrequest.setEntity(entity); return postrequest; } else { return new httpGet(request.getUrl()); } } case request.Method.GET: return new httpGet(request.getUrl()); case request.Method.deletE: Ownhttpdelete deleterequest = new Ownhttpdelete(request.getUrl()); deleterequest.addHeader(HEADER_CONTENT_TYPE,request.getBodyContentType()); setEntityIfNonEmptyBody(deleterequest,request); return deleterequest; case request.Method.POST: { httpPost postrequest = new httpPost(request.getUrl()); postrequest.addHeader(HEADER_CONTENT_TYPE,request.getBodyContentType()); setEntityIfNonEmptyBody(postrequest,request); return postrequest; } case request.Method.PUT: { httpPut putrequest = new httpPut(request.getUrl()); putrequest.addHeader(HEADER_CONTENT_TYPE,request.getBodyContentType()); setEntityIfNonEmptyBody(putrequest,request); return putrequest; } case request.Method.HEAD: return new httpHead(request.getUrl()); case request.Method.oPTIONS: return new httpOptions(request.getUrl()); case request.Method.TRACE: return new httpTrace(request.getUrl()); case request.Method.PATCH: { httpPatch patchrequest = new httpPatch(request.getUrl()); patchrequest.addHeader(HEADER_CONTENT_TYPE,request.getBodyContentType()); setEntityIfNonEmptyBody(patchrequest,request); return patchrequest; } default: throw new IllegalStateException("UnkNown request method."); } } private static void setEntityIfNonEmptyBody(httpentityEnclosingrequestBase httprequest,request<?> request) throws AuthFailureError { byte[] body = request.getBody(); if (body != null) { httpentity entity = new ByteArrayEntity(body); httprequest.setEntity(entity); } } private static class Ownhttpdelete extends httpPost { public static final String METHOD_NAME = "deletE"; public Ownhttpdelete() { super(); } public Ownhttpdelete(URI uri) { super(uri); } public Ownhttpdelete(String uri) { super(uri); } public String getmethod() { return METHOD_NAME; } } }
以上是大佬教程为你收集整理的android – Volley – 如何发送DELETE请求参数?全部内容,希望文章能够帮你解决android – Volley – 如何发送DELETE请求参数?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。