Last active
August 29, 2015 14:00
-
-
Save fixmycode/11130879 to your computer and use it in GitHub Desktop.
HTTP
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
private void processRequest() throws Exception { | |
InputStream is = socket.getInputStream(); //obtiene la entrada del socket | |
ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); //se crea un nuevo stream donde almacenar la entrada | |
int ch; //un caracter de lectura | |
while((ch = is.read()) != -1) { //mientras que el caracter leído desde el stream sea distinto de -1, cosa que no debería pasar nunca (es igual a que si le hubiese puesto while(true), pero necesitamos que en cada ciclo lea un caracter. | |
outputStream.write(ch); //se escribe ese caracter en el nuevo stream | |
if (ch == '\n') { //si el caracter leído es un salto de linea... | |
ch = is.read(); //lee otro caracter más | |
if (ch == '\n' || ch == '\r') //y si ese caracter adicional también es un salto de linea... | |
break; //sal del ciclo | |
outputStream.write(ch); //de otra forma escríbelo en el nuevo stream | |
} | |
} | |
//Esta string tiene todos los cabezales para que los leas por parte | |
String headerRequest = new String(outputStream.toByteArray(), "UTF-8"); //se convierte el nuevo stream en una string legible | |
//Si quieres verla puedes imprimirla | |
System.out.println(headerRequest); | |
//Aquí usas toxenizers, expresiones regulares o lo que sea para separar las partes de los cabezales | |
//usa la imaginación | |
//Imaginemos que extrajiste el método de la llamada a una variable llamada "method" | |
if (method.equals("POST")) { //si el método es POST. Recuerda, solo si es POST la solicitud va a tener más contenido. | |
outputStream = new ByteArrayOutputStream(); //reinicializa esta variable con un nuevo stream | |
ch = is.read(); //lee un caracter, que debería ser una linea vacía \n o un retorno de carro \r, no nos importa | |
while((ch = is.read()) != -1) { //mientras que se leen los datos, igual como el while anterior... | |
outputStream.write(ch); //...escribelos en el nuevo stream | |
if (ch == '\n' || ch == '\r' || ch == '}'){ //si encuentras cualquier caracter que pueda ser el final de una linea | |
break; //entonces sal del bucle | |
} | |
} | |
//En esta string queda el contenido del formulario :) | |
String payload = new String(outputStream.toByteArray(), "UTF-8"); | |
//puedes imprimirla si quieres: | |
System.out.println(payload); | |
} | |
//sigues procesando tu solicitud | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment