Skip to content

Commit ef035fb

Browse files
committed
Added a RequestHandle which can be used to cancel an HTTP request
1 parent 68482b3 commit ef035fb

File tree

3 files changed

+118
-52
lines changed

3 files changed

+118
-52
lines changed

library/src/com/loopj/android/http/AsyncHttpClient.java

Lines changed: 53 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -501,8 +501,8 @@ public void cancelRequests(Context context, boolean mayInterruptIfRunning) {
501501
* @param url the URL to send the request to.
502502
* @param responseHandler the response handler instance that should handle the response.
503503
*/
504-
public void head(String url, AsyncHttpResponseHandler responseHandler) {
505-
head(null, url, null, responseHandler);
504+
public RequestHandle head(String url, AsyncHttpResponseHandler responseHandler) {
505+
return head(null, url, null, responseHandler);
506506
}
507507

508508
/**
@@ -512,8 +512,8 @@ public void head(String url, AsyncHttpResponseHandler responseHandler) {
512512
* @param params additional HEAD parameters to send with the request.
513513
* @param responseHandler the response handler instance that should handle the response.
514514
*/
515-
public void head(String url, RequestParams params, AsyncHttpResponseHandler responseHandler) {
516-
head(null, url, params, responseHandler);
515+
public RequestHandle head(String url, RequestParams params, AsyncHttpResponseHandler responseHandler) {
516+
return head(null, url, params, responseHandler);
517517
}
518518

519519
/**
@@ -523,8 +523,8 @@ public void head(String url, RequestParams params, AsyncHttpResponseHandler resp
523523
* @param url the URL to send the request to.
524524
* @param responseHandler the response handler instance that should handle the response.
525525
*/
526-
public void head(Context context, String url, AsyncHttpResponseHandler responseHandler) {
527-
head(context, url, null, responseHandler);
526+
public RequestHandle head(Context context, String url, AsyncHttpResponseHandler responseHandler) {
527+
return head(context, url, null, responseHandler);
528528
}
529529

530530
/**
@@ -535,8 +535,8 @@ public void head(Context context, String url, AsyncHttpResponseHandler responseH
535535
* @param params additional HEAD parameters to send with the request.
536536
* @param responseHandler the response handler instance that should handle the response.
537537
*/
538-
public void head(Context context, String url, RequestParams params, AsyncHttpResponseHandler responseHandler) {
539-
sendRequest(httpClient, httpContext, new HttpHead(getUrlWithQueryString(isUrlEncodingEnabled, url, params)), null, responseHandler, context);
538+
public RequestHandle head(Context context, String url, RequestParams params, AsyncHttpResponseHandler responseHandler) {
539+
return sendRequest(httpClient, httpContext, new HttpHead(getUrlWithQueryString(isUrlEncodingEnabled, url, params)), null, responseHandler, context);
540540
}
541541

542542
/**
@@ -550,10 +550,10 @@ public void head(Context context, String url, RequestParams params, AsyncHttpRes
550550
* @param responseHandler the response handler instance that should handle
551551
* the response.
552552
*/
553-
public void head(Context context, String url, Header[] headers, RequestParams params, AsyncHttpResponseHandler responseHandler) {
553+
public RequestHandle head(Context context, String url, Header[] headers, RequestParams params, AsyncHttpResponseHandler responseHandler) {
554554
HttpUriRequest request = new HttpHead(getUrlWithQueryString(isUrlEncodingEnabled, url, params));
555555
if (headers != null) request.setHeaders(headers);
556-
sendRequest(httpClient, httpContext, request, null, responseHandler,
556+
return sendRequest(httpClient, httpContext, request, null, responseHandler,
557557
context);
558558
}
559559

@@ -568,8 +568,8 @@ public void head(Context context, String url, Header[] headers, RequestParams pa
568568
* @param url the URL to send the request to.
569569
* @param responseHandler the response handler instance that should handle the response.
570570
*/
571-
public void get(String url, AsyncHttpResponseHandler responseHandler) {
572-
get(null, url, null, responseHandler);
571+
public RequestHandle get(String url, AsyncHttpResponseHandler responseHandler) {
572+
return get(null, url, null, responseHandler);
573573
}
574574

575575
/**
@@ -579,8 +579,8 @@ public void get(String url, AsyncHttpResponseHandler responseHandler) {
579579
* @param params additional GET parameters to send with the request.
580580
* @param responseHandler the response handler instance that should handle the response.
581581
*/
582-
public void get(String url, RequestParams params, AsyncHttpResponseHandler responseHandler) {
583-
get(null, url, params, responseHandler);
582+
public RequestHandle get(String url, RequestParams params, AsyncHttpResponseHandler responseHandler) {
583+
return get(null, url, params, responseHandler);
584584
}
585585

586586
/**
@@ -590,8 +590,8 @@ public void get(String url, RequestParams params, AsyncHttpResponseHandler respo
590590
* @param url the URL to send the request to.
591591
* @param responseHandler the response handler instance that should handle the response.
592592
*/
593-
public void get(Context context, String url, AsyncHttpResponseHandler responseHandler) {
594-
get(context, url, null, responseHandler);
593+
public RequestHandle get(Context context, String url, AsyncHttpResponseHandler responseHandler) {
594+
return get(context, url, null, responseHandler);
595595
}
596596

597597
/**
@@ -602,8 +602,8 @@ public void get(Context context, String url, AsyncHttpResponseHandler responseHa
602602
* @param params additional GET parameters to send with the request.
603603
* @param responseHandler the response handler instance that should handle the response.
604604
*/
605-
public void get(Context context, String url, RequestParams params, AsyncHttpResponseHandler responseHandler) {
606-
sendRequest(httpClient, httpContext, new HttpGet(getUrlWithQueryString(isUrlEncodingEnabled, url, params)), null, responseHandler, context);
605+
public RequestHandle get(Context context, String url, RequestParams params, AsyncHttpResponseHandler responseHandler) {
606+
return sendRequest(httpClient, httpContext, new HttpGet(getUrlWithQueryString(isUrlEncodingEnabled, url, params)), null, responseHandler, context);
607607
}
608608

609609
/**
@@ -617,10 +617,10 @@ public void get(Context context, String url, RequestParams params, AsyncHttpResp
617617
* @param responseHandler the response handler instance that should handle
618618
* the response.
619619
*/
620-
public void get(Context context, String url, Header[] headers, RequestParams params, AsyncHttpResponseHandler responseHandler) {
620+
public RequestHandle get(Context context, String url, Header[] headers, RequestParams params, AsyncHttpResponseHandler responseHandler) {
621621
HttpUriRequest request = new HttpGet(getUrlWithQueryString(isUrlEncodingEnabled, url, params));
622622
if (headers != null) request.setHeaders(headers);
623-
sendRequest(httpClient, httpContext, request, null, responseHandler,
623+
return sendRequest(httpClient, httpContext, request, null, responseHandler,
624624
context);
625625
}
626626

@@ -635,8 +635,8 @@ public void get(Context context, String url, Header[] headers, RequestParams par
635635
* @param url the URL to send the request to.
636636
* @param responseHandler the response handler instance that should handle the response.
637637
*/
638-
public void post(String url, AsyncHttpResponseHandler responseHandler) {
639-
post(null, url, null, responseHandler);
638+
public RequestHandle post(String url, AsyncHttpResponseHandler responseHandler) {
639+
return post(null, url, null, responseHandler);
640640
}
641641

642642
/**
@@ -646,8 +646,8 @@ public void post(String url, AsyncHttpResponseHandler responseHandler) {
646646
* @param params additional POST parameters or files to send with the request.
647647
* @param responseHandler the response handler instance that should handle the response.
648648
*/
649-
public void post(String url, RequestParams params, AsyncHttpResponseHandler responseHandler) {
650-
post(null, url, params, responseHandler);
649+
public RequestHandle post(String url, RequestParams params, AsyncHttpResponseHandler responseHandler) {
650+
return post(null, url, params, responseHandler);
651651
}
652652

653653
/**
@@ -658,8 +658,8 @@ public void post(String url, RequestParams params, AsyncHttpResponseHandler resp
658658
* @param params additional POST parameters or files to send with the request.
659659
* @param responseHandler the response handler instance that should handle the response.
660660
*/
661-
public void post(Context context, String url, RequestParams params, AsyncHttpResponseHandler responseHandler) {
662-
post(context, url, paramsToEntity(params, responseHandler), null, responseHandler);
661+
public RequestHandle post(Context context, String url, RequestParams params, AsyncHttpResponseHandler responseHandler) {
662+
return post(context, url, paramsToEntity(params, responseHandler), null, responseHandler);
663663
}
664664

665665
/**
@@ -671,8 +671,8 @@ public void post(Context context, String url, RequestParams params, AsyncHttpRes
671671
* @param contentType the content type of the payload you are sending, for example application/json if sending a json payload.
672672
* @param responseHandler the response ha ndler instance that should handle the response.
673673
*/
674-
public void post(Context context, String url, HttpEntity entity, String contentType, AsyncHttpResponseHandler responseHandler) {
675-
sendRequest(httpClient, httpContext, addEntityToRequestBase(new HttpPost(url), entity), contentType, responseHandler, context);
674+
public RequestHandle post(Context context, String url, HttpEntity entity, String contentType, AsyncHttpResponseHandler responseHandler) {
675+
return sendRequest(httpClient, httpContext, addEntityToRequestBase(new HttpPost(url), entity), contentType, responseHandler, context);
676676
}
677677

678678
/**
@@ -688,12 +688,12 @@ public void post(Context context, String url, HttpEntity entity, String contentT
688688
* @param responseHandler the response handler instance that should handle
689689
* the response.
690690
*/
691-
public void post(Context context, String url, Header[] headers, RequestParams params, String contentType,
691+
public RequestHandle post(Context context, String url, Header[] headers, RequestParams params, String contentType,
692692
AsyncHttpResponseHandler responseHandler) {
693693
HttpEntityEnclosingRequestBase request = new HttpPost(url);
694694
if (params != null) request.setEntity(paramsToEntity(params, responseHandler));
695695
if (headers != null) request.setHeaders(headers);
696-
sendRequest(httpClient, httpContext, request, contentType,
696+
return sendRequest(httpClient, httpContext, request, contentType,
697697
responseHandler, context);
698698
}
699699

@@ -712,11 +712,11 @@ public void post(Context context, String url, Header[] headers, RequestParams pa
712712
* @param responseHandler the response handler instance that should handle
713713
* the response.
714714
*/
715-
public void post(Context context, String url, Header[] headers, HttpEntity entity, String contentType,
715+
public RequestHandle post(Context context, String url, Header[] headers, HttpEntity entity, String contentType,
716716
AsyncHttpResponseHandler responseHandler) {
717717
HttpEntityEnclosingRequestBase request = addEntityToRequestBase(new HttpPost(url), entity);
718718
if (headers != null) request.setHeaders(headers);
719-
sendRequest(httpClient, httpContext, request, contentType, responseHandler, context);
719+
return sendRequest(httpClient, httpContext, request, contentType, responseHandler, context);
720720
}
721721

722722
//
@@ -729,8 +729,8 @@ public void post(Context context, String url, Header[] headers, HttpEntity entit
729729
* @param url the URL to send the request to.
730730
* @param responseHandler the response handler instance that should handle the response.
731731
*/
732-
public void put(String url, AsyncHttpResponseHandler responseHandler) {
733-
put(null, url, null, responseHandler);
732+
public RequestHandle put(String url, AsyncHttpResponseHandler responseHandler) {
733+
return put(null, url, null, responseHandler);
734734
}
735735

736736
/**
@@ -740,8 +740,8 @@ public void put(String url, AsyncHttpResponseHandler responseHandler) {
740740
* @param params additional PUT parameters or files to send with the request.
741741
* @param responseHandler the response handler instance that should handle the response.
742742
*/
743-
public void put(String url, RequestParams params, AsyncHttpResponseHandler responseHandler) {
744-
put(null, url, params, responseHandler);
743+
public RequestHandle put(String url, RequestParams params, AsyncHttpResponseHandler responseHandler) {
744+
return put(null, url, params, responseHandler);
745745
}
746746

747747
/**
@@ -752,8 +752,8 @@ public void put(String url, RequestParams params, AsyncHttpResponseHandler respo
752752
* @param params additional PUT parameters or files to send with the request.
753753
* @param responseHandler the response handler instance that should handle the response.
754754
*/
755-
public void put(Context context, String url, RequestParams params, AsyncHttpResponseHandler responseHandler) {
756-
put(context, url, paramsToEntity(params, responseHandler), null, responseHandler);
755+
public RequestHandle put(Context context, String url, RequestParams params, AsyncHttpResponseHandler responseHandler) {
756+
return put(context, url, paramsToEntity(params, responseHandler), null, responseHandler);
757757
}
758758

759759
/**
@@ -766,8 +766,8 @@ public void put(Context context, String url, RequestParams params, AsyncHttpResp
766766
* @param contentType the content type of the payload you are sending, for example application/json if sending a json payload.
767767
* @param responseHandler the response handler instance that should handle the response.
768768
*/
769-
public void put(Context context, String url, HttpEntity entity, String contentType, AsyncHttpResponseHandler responseHandler) {
770-
sendRequest(httpClient, httpContext, addEntityToRequestBase(new HttpPut(url), entity), contentType, responseHandler, context);
769+
public RequestHandle put(Context context, String url, HttpEntity entity, String contentType, AsyncHttpResponseHandler responseHandler) {
770+
return sendRequest(httpClient, httpContext, addEntityToRequestBase(new HttpPut(url), entity), contentType, responseHandler, context);
771771
}
772772

773773
/**
@@ -781,10 +781,10 @@ public void put(Context context, String url, HttpEntity entity, String contentTy
781781
* @param contentType the content type of the payload you are sending, for example application/json if sending a json payload.
782782
* @param responseHandler the response handler instance that should handle the response.
783783
*/
784-
public void put(Context context, String url, Header[] headers, HttpEntity entity, String contentType, AsyncHttpResponseHandler responseHandler) {
784+
public RequestHandle put(Context context, String url, Header[] headers, HttpEntity entity, String contentType, AsyncHttpResponseHandler responseHandler) {
785785
HttpEntityEnclosingRequestBase request = addEntityToRequestBase(new HttpPut(url), entity);
786786
if (headers != null) request.setHeaders(headers);
787-
sendRequest(httpClient, httpContext, request, contentType, responseHandler, context);
787+
return sendRequest(httpClient, httpContext, request, contentType, responseHandler, context);
788788
}
789789

790790
//
@@ -797,8 +797,8 @@ public void put(Context context, String url, Header[] headers, HttpEntity entity
797797
* @param url the URL to send the request to.
798798
* @param responseHandler the response handler instance that should handle the response.
799799
*/
800-
public void delete(String url, AsyncHttpResponseHandler responseHandler) {
801-
delete(null, url, responseHandler);
800+
public RequestHandle delete(String url, AsyncHttpResponseHandler responseHandler) {
801+
return delete(null, url, responseHandler);
802802
}
803803

804804
/**
@@ -808,9 +808,9 @@ public void delete(String url, AsyncHttpResponseHandler responseHandler) {
808808
* @param url the URL to send the request to.
809809
* @param responseHandler the response handler instance that should handle the response.
810810
*/
811-
public void delete(Context context, String url, AsyncHttpResponseHandler responseHandler) {
811+
public RequestHandle delete(Context context, String url, AsyncHttpResponseHandler responseHandler) {
812812
final HttpDelete delete = new HttpDelete(url);
813-
sendRequest(httpClient, httpContext, delete, null, responseHandler, context);
813+
return sendRequest(httpClient, httpContext, delete, null, responseHandler, context);
814814
}
815815

816816
/**
@@ -821,10 +821,10 @@ public void delete(Context context, String url, AsyncHttpResponseHandler respons
821821
* @param headers set one-time headers for this request
822822
* @param responseHandler the response handler instance that should handle the response.
823823
*/
824-
public void delete(Context context, String url, Header[] headers, AsyncHttpResponseHandler responseHandler) {
824+
public RequestHandle delete(Context context, String url, Header[] headers, AsyncHttpResponseHandler responseHandler) {
825825
final HttpDelete delete = new HttpDelete(url);
826826
if (headers != null) delete.setHeaders(headers);
827-
sendRequest(httpClient, httpContext, delete, null, responseHandler, context);
827+
return sendRequest(httpClient, httpContext, delete, null, responseHandler, context);
828828
}
829829

830830
/**
@@ -836,10 +836,10 @@ public void delete(Context context, String url, Header[] headers, AsyncHttpRespo
836836
* @param params additional DELETE parameters or files to send along with request
837837
* @param responseHandler the response handler instance that should handle the response.
838838
*/
839-
public void delete(Context context, String url, Header[] headers, RequestParams params, AsyncHttpResponseHandler responseHandler) {
839+
public RequestHandle delete(Context context, String url, Header[] headers, RequestParams params, AsyncHttpResponseHandler responseHandler) {
840840
HttpDelete httpDelete = new HttpDelete(getUrlWithQueryString(isUrlEncodingEnabled, url, params));
841841
if (headers != null) httpDelete.setHeaders(headers);
842-
sendRequest(httpClient, httpContext, httpDelete, null, responseHandler, context);
842+
return sendRequest(httpClient, httpContext, httpDelete, null, responseHandler, context);
843843
}
844844

845845
/**
@@ -852,7 +852,7 @@ public void delete(Context context, String url, Header[] headers, RequestParams
852852
* @param responseHandler ResponseHandler or its subclass to put the response into
853853
* @param uriRequest instance of HttpUriRequest, which means it must be of HttpDelete, HttpPost, HttpGet, HttpPut, etc.
854854
*/
855-
protected void sendRequest(DefaultHttpClient client, HttpContext httpContext, HttpUriRequest uriRequest, String contentType, AsyncHttpResponseHandler responseHandler, Context context) {
855+
protected RequestHandle sendRequest(DefaultHttpClient client, HttpContext httpContext, HttpUriRequest uriRequest, String contentType, AsyncHttpResponseHandler responseHandler, Context context) {
856856
if (contentType != null) {
857857
uriRequest.addHeader("Content-Type", contentType);
858858
}
@@ -871,6 +871,8 @@ protected void sendRequest(DefaultHttpClient client, HttpContext httpContext, Ht
871871

872872
// TODO: Remove dead weakrefs from requestLists?
873873
}
874+
875+
return new RequestHandle(request);
874876
}
875877

876878
/**

0 commit comments

Comments
 (0)