InputStreamReader en el socket no lee completamente la solicitud POST

Tengo el siguiente código:

ServerSocket ss = new ServerSocket(2351);

Socket s = ss.accept();
InputStreamReader in = new InputStreamReader(s.getInputStream());
writer = new PrintWriter(s.getOutputStream());
writer.flush();

cbuf = new char[buf_length];
in.read(cbuf);
inputLine = new String(cbuf);

Ejecuté cuatro envíos consecutivos a mi servidor y cuando depuro el código anterior se ejecuta correctamente tres veces. La otra vez, el siguiente es mi inputLine que se lee desde el socket:

POST /record HTTP/1.1
Content-type: application/soap+xml;charset="utf-8";action=""
Accept: application/soap+xml, multipart/related, text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2
User-Agent: JAX-WS RI 2.1.5-b03-
Host: localhost:2351
Connection: keep-alive
Content-Length: 2197

Y el contenido es solo 2197 espacios en blanco en lugar de un contenido de 2197 de longitud. Es realmente extraño y estoy atascado. Cualquier ayuda es apreciada. Gracias.

Respuesta 1

Trataré de hacer que la respuesta de EJP sea más concreta. En lugar de

n.read(cbuf);
inputLine = new String(cbuf);

Necesitas hacer algo como:

StringBuilder sb = new StringBuilder();
int charsRead;
while ((charsRead = n.read(cbuf)) != -1) {
    sb.append(cbuf, 0, charsRead);
}
inputLine = sb.toString();

Puede que esta no sea la respuesta a la pregunta que está haciendo, pero definitivamente es un error en el código que publicó.

Respuesta: 2

Estoy empezando a usar la interfaz KeyListener. Quiero crear una aplicación de consola muy simple. Me gustaría que el programa imprima "hola" si alguna vez presiono la tecla 'ENTER'. Desafortunadamente, debido a ...

Muy bien, así que estoy tratando de lograr lo que hay en esta imagen: creo que este sería un sistema de coordinación barcéntrica, pero ¿dónde la X siempre es igual a 1? Básicamente, necesito que aumente / disminuya solo cuando me muevo ...

código: carpeta de archivo = archivo nuevo ("src / zipper"); Archivo [] listOfFiles = folder.listFiles (); Archivo s = listOfFiles [0]; Funciona excelente desde eclipse pero desde el cmd (windows) me sale este error: Excepción en ...

Actualmente estoy desarrollando un sitio web de concurso de programación y quiero implementar el soporte para enviar código y ejecutarlo en el sitio web. Después de buscar un poco en Google, todavía no he encontrado ninguno "...