Si desea imprimir el contenido de una página web, es necesario trabajar con el protocolo HTTP. Usted no tiene que aplicar por sí mismo, la mejor manera es utilizar las implementaciones existentes, tales como el API Java HttpURLConnection o Apache de HttpClient
Aquí está un ejemplo de cómo hacerlo con HttpURLConnection:
URL url = new URL("http","www.google.com");
HttpURLConnection urlc = (HttpURLConnection)url.openConnection();
urlc.setAllowUserInteraction(false);
urlc.setDoInput(true);
urlc.setDoOutput(false);
urlc.setUseCaches(true);
urlc.setRequestMethod("GET");
urlc.connect();
// check you have received an status code 200 to indicate OK
// get the encoding from the Content-Type header
BufferedReader in = new BufferedReader(new InputStreamReader(urlc.getInputStream()));
String line = null;
while((line = in.readLine()) != null) {
System.out.println(line);
}
// close sockets, handle errors, etc.
Como escrito anteriormente, puede guardar el tráfico al agregar el encabezado Aceptar codificación y verificar el encabezado Content-Encoding de la respuesta.
Este es un ejemplo HttpClient, tomada de here:
// Create an instance of HttpClient.
HttpClient client = new HttpClient();
// Create a method instance.
GetMethod method = new GetMethod(url);
// Provide custom retry handler is necessary
method.getParams().setParameter(HttpMethodParams.RETRY_HANDLER,
new DefaultHttpMethodRetryHandler(3, false));
try {
// Execute the method.
int statusCode = client.executeMethod(method);
if (statusCode != HttpStatus.SC_OK) {
System.err.println("Method failed: " + method.getStatusLine());
}
// Read the response body.
byte[] responseBody = method.getResponseBody();
// Deal with the response.
// Use caution: ensure correct character encoding and is not binary data
System.out.println(new String(responseBody));
} catch (HttpException e) {
System.err.println("Fatal protocol violation: " + e.getMessage());
e.printStackTrace();
} catch (IOException e) {
System.err.println("Fatal transport error: " + e.getMessage());
e.printStackTrace();
} finally {
// Release the connection.
method.releaseConnection();
}
Por favor, muestre un ejemplo corto pero * completo *. No ha mostrado cómo está enviando la solicitud a Google. Si especifica que puede manejar datos gzip, por ejemplo, primero deberá descomprimir la salida. –
(También tenga en cuenta que su código actual efectivamente está asumiendo ISO-Latin-1.) –
hola, después de abrir el nuevo Socket(); Hago un "get index.html" y lo envío a "fuera" para tratar de obtener el "en" como el código anterior. No he especificado handle gzipped, ¿cómo saber si está comprimido? – cometta