2010-08-18 8 views
2

J'utilise Apache HttpClient via httpclient-fluent-builder pour télécharger une page http.ne peut pas télécharger avec HttpClient avec un port serveur différent

Voici le code:

... 
try { 
    response = Http.get("http://fr3.ah.fm:9000/played.html") 
     .use(client)    // use this HttpClient (required) 
     .charset("windows-1252")  // set the encoding... (optional) 
     .asString(); 
} catch (IOException e) { 
    Log.d(TAG, "Error: "+e.toString()); 
    e.printStackTrace(); 
} 
Log.i(TAG, ""+ response); 
... 

Le problème est que je reçois org.apache.http.client.ClientProtocolException

Il est quelque chose avec l'hôte: port/url, beacause il fonctionne avec urls sans ports. Je reçois également cette même erreur avec une autre classe Httphelper que fluent-builder. Le pare-feu est désactivé.

Logcat: http://pastebin.com/yMMvvdQ3

+0

Si vous tapez http://fr3.ah.fm:9000/played.html avec votre navigateur, cela vous donne quelque chose de valable? –

+0

Oui, Et je l'ai essayé à la fois depuis mon navigateur habituel et le navigateur Android à l'intérieur de l'émulateur. – droidgren

Répondre

2

ce qu'il trouvé était via ce post qu'il était le serveur Shoutcast ...

Vous devriez être en mesure de se connecter à 8000 avec votre web navigateur et obtenir la page d'état DNAS . Si, d'autre part, vous vous connectez à ce port avec un lecteur multimédia , il va retourner le flux direct MP3 . (Malheureusement, dans une pièce incroyablement boneheaded de conception, la façon dont SHOUTcast décide que de répondre avec est en reniflant votre tête User-Agent pour quelque chose à commencer par Mozilla, donc si vous êtes en utilisant un autre navigateur ou bloquer votre UA, vous ne serez pas en mesure de obtenir le statut, et si de flux vers le bas, vous pourriez obtenir rien.)

me rendait fou .. Mais il est une solution facile. Je viens d'ajouter.

.header("User-Agent", "UserAgent: Mozilla/5.0") 
+0

Vous n'avez aucune idée de l'effort que vous venez de me sauver. JE VOUS REMERCIE! :) –

0

essayer de mettre l'uri en utilisant HttpHost et l'utiliser dans HttpClient.execute().

Je ne l'ai pas essayé ..