Come faccio un HTTP GET in Java?Come faccio un HTTP GET in Java?
risposta
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.
Questo progetto è la fine del live. – shredding
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]));
}
}
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
Anche la classe URL non è in grado di ottenere il set di caratteri per decodificare il risultato. –
+1 per il codice completo –
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.
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¶m2=value2....";
URL url = new URL(urlString);
URLConnection conn = url.openConnection();
InputStream is = conn.getInputStream();
// Do what you want with that stream
@HyLian: dato il livello apparente della domanda dell'OP, il tuo frammento di codice dovrebbe includere un try {} finally {} per riordinare. –
@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
InpuTSteam = tutto ciò che il server ci invia? – CodeGuru
http://stackoverflow.com/q/2793150/632951 – Pacerier