2009-09-28 16 views

Odpowiedz

49

Technicznie można to zrobić za pomocą prostego gniazda TCP. Nie polecałbym tego jednak. Gorąco polecam zamiast tego używać Apache HttpClient. W swojej simplest form:

GetMethod get = new GetMethod("http://httpcomponents.apache.org"); 
// execute method and handle any error responses. 
... 
InputStream in = get.getResponseBodyAsStream(); 
// Process the data from the input stream. 
get.releaseConnection(); 

i tutaj jest bardziej complete example.

+0

Ten projekt jest koniec żywo. – shredding

154

Jeśli chcesz przesyłać strumieniowo dowolną stronę internetową, możesz skorzystać z poniższej metody.

import java.io.*; 
import java.net.*; 

public class c { 

    public static String getHTML(String urlToRead) throws Exception { 
     StringBuilder result = new StringBuilder(); 
     URL url = new URL(urlToRead); 
     HttpURLConnection conn = (HttpURLConnection) url.openConnection(); 
     conn.setRequestMethod("GET"); 
     BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream())); 
     String line; 
     while ((line = rd.readLine()) != null) { 
     result.append(line); 
     } 
     rd.close(); 
     return result.toString(); 
    } 

    public static void main(String[] args) throws Exception 
    { 
    System.out.println(getHTML(args[0])); 
    } 
} 
+6

Jedną z zalet odpowiedzi cletusa (przy użyciu Apache HttpClient) jest to, że HttpClient może automatycznie obsługiwać przekierowania i uwierzytelnianie proxy. Standardowe klasy Java API, których używasz, nie robią tego za Ciebie. Z drugiej strony korzystanie ze standardowych klas API ma tę zaletę, że nie trzeba włączać biblioteki zewnętrznej do projektu. – Jesper

+0

Również klasa adresu URL nie może pobrać zestawu znaków do dekodowania wyniku. –

+17

+1 dla kompletnego kodu –

5

Najprostszy sposób, który nie wymaga bibliotek innych firm to stworzyć URL obiekt, a następnie zadzwonić albo openConnection lub openStream na nim. Zauważ, że jest to dość prosty interfejs API, więc nie będziesz mieć dużej kontroli nad nagłówkami.

26

Jeśli nie chcesz korzystać z bibliotek zewnętrznych, możesz używać klas URL i URLConnection ze standardowego interfejsu API języka Java.

Przykładem wygląda następująco:

urlString = "http://wherever.com/someAction?param1=value1&param2=value2...."; 
URL url = new URL(urlString); 
URLConnection conn = url.openConnection(); 
InputStream is = conn.getInputStream(); 
// Do what you want with that stream 
+1

@Hylja: biorąc pod uwagę pozorny poziom pytania OP, twój fragment kodu powinien zawierać próbkę {} finally {} do posprzątania. –

+0

@ Stephen C: Na pewno był to tylko fragment kodu pokazujący, jakie zajęcia są w grze i jak z nich korzystać. Jeśli umieścisz to w prawdziwym programie, powinieneś zagrać w zasady wyjątku :) – HyLian

+0

InpuTSteam = wszystko, co dostaje do nas serwer? – CodeGuru

Powiązane problemy