Encabezados HTTP para la codificación POST fragmentada-Error 411
http-headers arduino (1)
Estoy enviando datos a un servidor con un Arduino que requiere la construcción de un HTML POST línea por línea . No necesariamente conozco Content-Length a-priori, así que estoy usando la codificación "fragmentada".
Cuando probé esta publicación de ejemplo de Wikipedia con la opción "Transferir codificación" como se especifica en rfc2616
client.println("POST /myurl HTTP/1.1");
client.println("Host: 12.345.679.999"); // replaced with the test server''s IP
client.println("User-Agent: Arduino/1.0");
client.println("Transfer-Encoding: chunked");
client.println();
client.println("4");
client.println("test");
client.println("0");
client.println();
o, con caracteres de escape explícitos:
client.print("4/r/ntest/r/n0/r/n/r/n");
Recibo el error de mi servidor:
HTTP/1.1 411 Length Required
A request of the requested method POST requires a valid Content-length.
Server: Apache/2.2.22 (Ubuntu)
Sin embargo, la codificación "fragmentada" no debe requerir un campo de encabezado de longitud de contenido, consulte 4.4 - Longitud del mensaje en rfc2616
¿Me estoy perdiendo un campo? ¿Por qué no funciona esta llamada?
Para el registro, la codificación no fragmentada funciona:
if(client.connect(server, 80)){
String PostData = "test";
Serial.println("POST /myurl HTTP/1.1");
client.println("Host: 12.345.679.999"); // replaced with the test server''s IP
Serial.println("User-Agent: Arduino/1.0");
Serial.print("Content-Length: ");
Serial.println(PostData.length());
Serial.println();
Serial.println(PostData);
}
ACTUALIZAR
Desde apache2 error.log: "Prohibida la codificación de transferencia fragmentada"
Después de encontrar
chunked Transfer-Encoding forbidden
en mi registro de Apache2 llegué a la conclusión de que el error no estaba en el POST que estaba haciendo.
Descubrí que modwsgi (la capa intermedia entre apache y django) no habilita la codificación de transferencia fragmentada de forma predeterminada. En el pasado, Chunked no era compatible en absoluto
Refiriéndome al registro de cambios en la nueva versión de modwsgi , encontré que al escribir
WSGIChunkedRequest On
en mi archivo httpd.conf
apache se permiten solicitudes fragmentadas (no hay más error 411)