Comment puis-je annuler un Android requête http?

Je suis en utilisant AsyncTask à initalize AndroidHttpClient et exécuter une requête POST en doInBackground(). J'aimerais que l'utilisateur soit en mesure d'annuler la demande en appuyant sur le bouton retour. AsyncTask a un cancel() méthode qui ne change la valeur de retour boolean de isCancelled() et puis attend doInBackground() à terminer avant d'appeler onCancelled(). Cela signifie que AsyncTask laisse le doInBackground() méthode de vérifier en permanence si la tâche a été annulée (à l'aide de isCancelled()). Si elle a été annulée, doInBackground() doit retourner prématurément prématurément. Le problème que je vais avoir, c'est que 99% de l'exécution du thread de travail dans doInBackground() s'arrête sur:

HttpResponse response = httpClient.execute(request[0]);

parce que cet appel de fonction synchrone encapsule le réseau aspects de la demande. Comment puis-je annuler la demande à mi-chemin à travers?

J'envisage d'essayer de changer la durée du délai au moment de la demande, mais cela semble un thread dangereux.

J'envisage aussi primordial AsyncTask's cancel() méthode, qui peut fonctionner mieux.

Des suggestions?

OriginalL'auteur Teddy | 2011-08-21