No soy un programador de Java. Trato de evitarlo a toda costa en realidad, pero se requiere que lo use para una clase (en el sentido de la escuela). el maestro requiere que usamos socket(), BufferedReader(), PrintStream() y varias otras cosas, incluyendo el método readLine() BufferedReader() 's.Java, sockets, BufferedReader y readline colgar ... :(
Básicamente, este es el problema que estoy teniendo. la documentación indica claramente que readLine debe devolver un valor nulo al final de la secuencia de entrada, pero eso no es lo que está pasando.
Socket link = new Socket(this.address, 80);
BufferedReader in = new BufferedReader(new InputStreamReader(link.getInputStream()));
PrintWriter out = new PrintWriter( new PrintWriter( link.getOutputStream(), true));
out.print("GET blah blah blah"); // http request by hand
out.flush(); // send the get please
while((s=in.readLine()) != null) {
// prints the html correctly, hooray!!
System.out.println(s);
}
en lugar de terminar al final del HTML, aparece un l en blanco ine, a 0 y otra línea en blanco y luego in.readLine() se bloquea para siempre. ¿Por qué? ¿Dónde está mi nulo?
Probé out.close() para ver si tal vez Yahoo! estaba haciendo una sesión persistente http o algo así (que no creo que sería sin el encabezado que estamos dispuestos a hacerlo).
Todos los ejemplos de sockets de Java que encuentro en la red parecen indicar while loop es la forma correcta. Simplemente no sé lo suficiente Java para depurar esto.
Esto tiene sentido. Necesitaba verificar los encabezados. Solo voy a usar http1.0. – jettero
Sí, para un ejercicio escolar es lo más sensato. – Bombe