Не може да се изтегли с HttpClient с различен сървърен порт

Използвам HttpClient на Apache чрез http://code.google.com/p/httpclient-fluent-builder/, за да изтегля http страница.

Това е кодът:

...
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 );
...

Проблемът е, че получавам org.apache.http.client.ClientProtocolException

Това е нещо с host:port/url, защото работи с url адреси без портове. Също така получавам същата грешка с друг клас Httphelper, отколкото fluent-builder. Защитната стена е изключена.

Logcat: http://pastebin.com/yMMvvdQ3


person droidgren    schedule 18.08.2010    source източник
comment
Ако натиснете fr3.ah.fm:9000/played.html с вашия браузър, дава ли ти нещо валидно?   -  person Cheryl Simon    schedule 19.08.2010
comment
Да, и го пробвах както от обикновения си браузър, така и от браузъра за android в емулатора.   -  person droidgren    schedule 19.08.2010


Отговори (2)


Разбрах какво е чрез тази публикация, че това е сървърът на Shoutcast...

Трябва да можете да се свържете с 8000 с вашия уеб браузър и да получите страницата за състоянието на DNAS. Ако, от друга страна, се свържете към този порт с медиен плейър, той ще върне директния MP3 поток. (За съжаление, в един невероятно глупав дизайн, начинът, по който SHOUTcast решава с какво да отговори, е като надуши заглавката на потребителския ви агент за нещо, започващо с Mozilla, така че ако използвате алтернативен браузър или блокирайки вашия UA, вие няма да можете да получите състоянието и ако потокът не работи, може просто да не получите нищо.)

Подлуди ме.. Но това е лесно решение. Просто добавих.

.header("User-Agent", "UserAgent: Mozilla/5.0")
person droidgren    schedule 19.08.2010
comment
Нямаш представа колко усилия ми спести току-що. БЛАГОДАРЯ ТИ! :) - person gop; 02.07.2012

опитайте да зададете uri с помощта на HttpHost и го използвайте в HttpClient.execute().

не съм го пробвал..

person Vinay    schedule 19.08.2010