Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: java pobranie odpowiedzi ze strony
Forum PHP.pl > Inne > Hydepark
nospor
Hejka, mam taki kod (coś ala phpowy curl)
Kod
List<NameValuePair> formparams = new ArrayList<NameValuePair>();
                    formparams.add(new BasicNameValuePair("Name", "***"));
                    formparams.add(new BasicNameValuePair("Passwd", "****"));
                    UrlEncodedFormEntity entity = new UrlEncodedFormEntity(formparams, "UTF-8");
                    HttpPost httppost = new HttpPost("http://mpojastrona.pl");
                    httppost.setEntity(entity);
                    
                    HttpClient httpclient = new DefaultHttpClient();
                    HttpResponse response = httpclient.execute(httppost);
                    HttpEntity entityResponse = response.getEntity();

I pod zmienną entityResponse mam odpowiedź serwera. Jak pobrać tę odpowiedź jako tekst? W google jedyne co mi się udaje znaleźć to kody tasiemce, gdzie by pobrać z tego tekst muszę dowalić od kilkunastu do kilkudziesieciu linii.... No nie chce mi się wierzyć, że tak prostą rzecz można tak skomplikować...
viking
Kod
HttpEntity entityResponse = response.getEntity().getContent().toString();


questionmark.gif?
Crozin
HttpEntity.getContent() zwraca Ci strumień z zawartością. Tutaj możesz skorzystać z IOUtils.toString(InputStream, String) (Apache Commons) by szybko wczytać zawartość do stringa.

PS. O ile dobrze pamiętam IOUtils.toString() zamyka strumień (InputStream.close()) ale upewnij się czy aby na pewno tak jest.

EDIT:
@viking: InputStream.toString() chyba nigdy nie zwróci Ci zawartości strumienia w postaci stringa. Dostaniesz "standardową" nazwę klasy i hashCode obiektu, przykładowo: java.io.ByteArrayInputStream@18bff68.
Evinek
String responseBody = EntityUtils.toString(response.getEntity());
Takie coś znalazłem.
http://stackoverflow.com/questions/2323617...-get-the-result
nospor
Tak, znalazłem już. Musze jeszcze tylko znaleźć gdzie te IOUtils wrzucic by było widoczne smile.gif
java to jedno wielkie nie porozumienie tak nawiasem mówiąc.... żeby proste rzeczy tak komplikować to naprawdę ktoś miał niezłą fazę gdy to pisał :/

edit:
Cytat
HttpEntity entityResponse = response.getEntity().getContent().toString();
No aż tak tępy nie jestem wink.gif
I nie, to nie zwraca zawartosci, tylko nazwę klasy smile.gif
Crozin
Cytat
Tak, znalazłem już. Musze jeszcze tylko znaleźć gdzie te IOUtils wrzucic by było widoczne smile.gif
Nigdzie tego ręcznie nie wrzucaj, tylko od razu zacznij korzystać z Mavena (bądź innego narzędzia tego typu). Oszczędzisz sobie masę czasu, jednocześnie trzymając się jakiegoś standardu Twój kod będzie łatwiejszy w utrzymaniu.
Cytat
java to jedno wielkie nie porozumienie tak nawiasem mówiąc.... żeby proste rzeczy tak komplikować to naprawdę ktoś miał niezłą fazę gdy to pisał :/
Nie chcę tutaj się w jakieś famewary bawić, Java ma swoje ułomności (zresztą jak wszystko, szczególnie tak stare), ale tutaj nie można się do niczego przyczepić. Idiotyzmem byłoby gdyby HttpEntity.getContent() zwracał Stringa zamiast InputStreama. Czy powinni dodać metodę getContentAsString()? Oczywiście mogliby to zrobić, ale po co zaśmiecać bibliotekę/obiekt zbędnymi metodami. wink.gif
nospor
@Crozin z całym szacunkiem, ale jak java nie potrafi mi zwrócić tekstu, który mogę potem normalnie przetworzyć, a zamiast tego muszę albo korzystać z kolejnych zewnętrznych jarów by ten tekst dostać, lub pisać kilkudzięcielinijkowe funkcje by ten tekst uzyskać, to sorki, to ja wale ten inputString, z którym nie mogę nic normalnego zrobić i uważam, że java to jedno wielkie nieporozumienie smile.gif

Może jak już to wszystko sobie poukładam i przyzwyczaję się, że proste rzeczy w javie robi się cholernie nieprosto, to może zmienię zdanie na jej temat smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.