2010-11-09 13 views
1

J'essaie d'appeler un serveur Web qui utilise des redirections d'URL relatives pour certains des appels. Bien sûr, cela ne fonctionne pas avec DefaultHttpClient car il ne le traite pas comme une URL relative. Je suis allé jusqu'à implémenter un RedirectHandler dans le but d'attraper la redirection et d'ajouter l'appel de base, mais je n'arrive pas à trouver comment obtenir l'emplacement de la redirection.Gestionnaire de redirection Httpclient

Avec la méthode suivante, comment puis-je savoir où je suis redirigé? Je ne peux pas trouver de champs sur la réponse ou le contexte qui ont ce dont j'ai besoin et je ne sais pas où chercher.

public URI getLocationURI(HttpResponse response, HttpContext context) 

Répondre

0

Jetez un oeil ici: HttpClient 4 - how to capture last redirect URL

Je voudrais essayer getStatusLine() pour le démarrage.

+3

je vis ce poste. La méthode semble être de trouver les redirections qui se sont produites après la fin d'une requête. Lorsque j'essaie cette méthode lors d'une redirection, j'obtiens simplement l'URL initiale que j'ai saisie. getStatusLine() me donne simplement 200 OK – skorulis

0

Ma solution est de lire les en-têtes de localisation et de les suivre. Cela m'a aidé:

if (statusCode != HttpStatus.SC_OK) { 
    Header[] headers = response.getHeaders("Location"); 

    if (headers != null && headers.length != 0) { 
     String newUrl = headers[headers.length - 1].getValue(); 
     // call again the same downloading method with new URL 
     return downloadBitmap(newUrl); 
    } else { 
     return null; 
    } 
} 

Plus dans mon post - Follow 302 redirects with AndroidHttpClient