2009-09-28 14 views

Respuesta

49

Técnicamente, podría hacerlo con un zócalo TCP directo. No lo recomendaría sin embargo. Recomiendo encarecidamente que use Apache HttpClient en su lugar. En su 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(); 

y aquí está una más complete example.

+0

Este proyecto es final en vivo. – shredding

154

Si desea transmitir cualquier página web, puede utilizar el siguiente método.

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

Una de las ventajas de la respuesta de cletus (al utilizar Apache HttpClient) es que HttpClient puede manejar automáticamente los redireccionamientos y la autenticación del proxy por usted. Las clases API estándar de Java que usa aquí no lo hacen por usted. Por otro lado, el uso de las clases de API estándar tiene la ventaja de que no necesita incluir una biblioteca de terceros en su proyecto. – Jesper

+0

También la clase URL no puede obtener el juego de caracteres para decodificar el resultado. –

+17

+1 para el código completo –

5

La forma más sencilla que no requiere bibliotecas de terceros para crear un objeto URL y luego llamar a cualquiera openConnection o openStream en él. Tenga en cuenta que esta es una API bastante básica, por lo que no tendrá mucho control sobre los encabezados.

26

Si no desea utilizar bibliotecas externas, puede usar las clases URL y URLConnection de la API Java estándar.

Un ejemplo se ve así:

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: dado el nivel aparente de la pregunta de OP, el fragmento de código debe incluir una {{{{{{{{{{{{{{{}} {} {} {} {} {} {} {} fin) {{{{{{{}}} {} fin de ponerlo en orden. –

+0

@Stephen C: Claro, eso fue solo un fragmento de código para mostrar qué clases hay en el juego y cómo usarlas. Si lo pones en un programa real, deberías jugar las reglas de excepción :) – HyLian

+0

InpuTSteam = ¿todo lo que el servidor nos envía? – CodeGuru