2009-09-28 4 views

risposta

49

Tecnicamente si potrebbe fare con un socket TCP dritto. Non lo raccomanderei comunque. Ti consiglio vivamente di utilizzare Apache HttpClient. Nella sua 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(); 

e qui è un altro complete example.

+0

Questo progetto è la fine del live. – shredding

154

Se si desidera eseguire lo streaming di qualsiasi pagina Web, è possibile utilizzare il metodo seguente.

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

Uno dei vantaggi della risposta di cletus (utilizzando Apache HttpClient) è che HttpClient può gestire automaticamente i reindirizzamenti e l'autenticazione proxy per voi. Le classi API Java standard che usi qui non lo fanno per te. D'altra parte, l'utilizzo delle classi API standard ha il vantaggio che non è necessario includere una libreria di terze parti nel progetto. – Jesper

+0

Anche la classe URL non è in grado di ottenere il set di caratteri per decodificare il risultato. –

+17

+1 per il codice completo –

5

Il modo più semplice che non richiede librerie di terze parti per creare un oggetto URL e quindi chiamare o openConnection o openStream su di esso. Nota che questa è un'API piuttosto semplice, quindi non avrai molto controllo sulle intestazioni.

26

Se non si desidera utilizzare librerie esterne, è possibile utilizzare le classi URL e URLConnection dall'API Java standard.

Un esempio si presenta così:

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

@HyLian: dato il livello apparente della domanda dell'OP, il tuo frammento di codice dovrebbe includere un try {} finally {} per riordinare. –

+0

@Stephen C: Sicuramente, era solo un frammento di codice per mostrare quali classi ci sono nel gioco e come usarle. Se lo metti in un programma reale dovresti suonare le regole di eccezione :) – HyLian

+0

InpuTSteam = tutto ciò che il server ci invia? – CodeGuru