Im tratando de conectarse a una php
secuencia de comandos en un servidor y recuperar el texto del guión echoes.Do lograr He utilizado el siguiente código.
CÓDIGO: =
import java.net.*;
import java.io.*;
class con{
public static void main(String[] args){
try{
int c;
URL tj = new URL("http://www.thejoint.cf/test.php");
URLConnection tjcon = tj.openConnection();
InputStream input = tjcon.getInputStream();
while(((c = input.read()) != -1)){
System.out.print((char) c);
}
input.close();
}catch(Exception e){
System.out.println("Caught this Exception:"+e);
}
}
}
Hago obtener la salida deseada es que el texto "Va a ser muy exitoso" .Pero cuando quito el (char)
tipo de fundición se produce un dígito 76 de largo. 8911111732119105108108329810132118101114121321151179999101115115102117108108
número que yo no soy capaz de dar sentido of.I leer que el getInputStream
es un byte stream
número, entonces debe haber de dígitos Tiempos 8 Número de larga salida? Cualquier idea sería muy útil, gracias
No se imprime un número de 76 dígitos de longitud. Usted tiene un bucle de ahí, se imprime una gran cantidad de números, cada uno hasta tres dígitos de longitud (un byte).
En ASCII, 89 = "Y", 111 = "O" ....
Lo que el yeso para char
que quitó hizo fue que interpreta ese número como un punto de código de Unicode e imprimir los caracteres correspondientes en su lugar (también uno a la vez).
Esta manera de leer el texto de bytes por byte es muy frágil. Básicamente, sólo funciona con ASCII. Usted debe utilizar un Reader
para envolver el InputStream
. A continuación, puede leer char
y String
directamente (y que se hará cargo de los conjuntos de caracteres como Unicode).
Oh, pensé que iba a dar a conocer la representación byte de la carta individual.
Pero eso es exactamente lo que hace. Se puede ver más claramente si se utiliza println
en lugar de print
(a continuación, se imprimirá cada número en su propia línea).