netty http request getContent alguna vez da un encabezado en el cuerpo

Estoy usando netty en modo cliente usando ClientBootstrap. Cuando intento recibir un mensaje la mayoría de las veces funciona bien y solo me devuelve un cuerpo, pero a veces (el servidor siempre devuelve la misma respuesta) obtengo un encabezado dentro del contenido, cuando llamo un mensaje.getContent ():

Content-type: text/xml;charset=windows-1251
Content-length: 649
Connection: keep-alive

<?xml version="1.0" encoding="windows-1251"?>
<response>
  <status>
    <code>0</code>
  </status>
  <detail>

Obviamente, debe ser solo el cuerpo de la solicitud http. Y cuando devuelve la parte del encabezado en un cuerpo, la parte del cuerpo en sí es cortada por el tamaño de los encabezados.

Aquí está mi PipileniFactory:

public ChannelPipeline getPipeline() throws Exception {
    ChannelPipeline pipeline = pipeline();
    if (isSecure) {
        SSLContext clientContext = SSLContext.getInstance("TLS");
        clientContext.init(null, new TrustManager[]{DUMMY_TRUST_MANAGER}, null);
        SSLEngine engine = clientContext.createSSLEngine();
        engine.setUseClientMode(true);
        pipeline.addLast("ssl", new SslHandler(engine));
    }

    pipeline.addLast("codec", new HttpClientCodec());
    pipeline.addLast("aggregator", new HttpChunkAggregator(1048576));
    pipeline.addLast("timeout", new ReadTimeoutHandler(timer, timeout, TimeUnit.MILLISECONDS));
    pipeline.addLast("handler", ibConnectorHandler);
    return pipeline;
}

Y aquí está messageReceived de ibConnectorHandler:

public void messageReceived(ChannelHandlerContext ctx, MessageEvent e) throws Exception {
    logger.info("Received");

    HttpResponse response = (HttpResponse) e.getMessage();
    ChannelBuffer resContent = response.getContent();
    byte[] content = null;
    if (resContent.readable()) {
        content = Arrays.copyOf(resContent.array(), resContent.readableBytes());
        logger.debug(Arrays.toString(req.getParams().toArray()) + "----------" + new String(content));
    }

}

Estoy usando netty 3.5.8.

UPD Cuando todo está correcto, resContent es instanceof org.jboss.netty.buffer.BigEndianHeapChannelBuffer. Y cuando muestra el encabezado resContent es instanceof org.jboss.netty.buffer.SlicedChannelBuffer. Entonces, hay un problema cuando netty usa un org.jboss.netty.buffer.SlicedChannelBuffer para un contenido de mensaje http.

Respuesta 1

Soy nuevo en AWS. ¿Alguien puede decirme cómo puedo usar el administrador de sesión memcached con instancias EC2 en las que está instalado tomcat para manejar los datos de sesión? ¿Cómo se puede usar elasticache en este contexto?

He creado una tarjeta de interfaz de bucle invertido en Windows 7 x64, dice que la IP de mi máquina local es 20.200.20.30 / 255.255.255.128 y la IP del adaptador de bucle invertido es 20.200.20.65 / 255.255.255.128 I ...

Tengo una aplicación por lotes de Spring en la que me gustaría tener dos opciones para activar el lote: Exponer un Programador de API REST Al empaquetar la aplicación por lotes como Tarea, puedo implementar el ...

Estoy escribiendo pruebas de Java Selenium para vistas de lista, específicamente aquellas para validar y luego seleccionar un elemento de una vista de lista. Sin embargo, me está volviendo loco, ya que las pruebas funcionarán bien la mitad del tiempo, pero el ...