Si un supuesto PDF o una hoja de cálculo comienza con HTTP/1.1 200 OK, el descargador guardó una respuesta sin procesar en lugar del archivo. Esta respuesta esquemática contiene solo cuatro bytes de contenido:

HTTP/1.1 200 OK
Transfer-Encoding: chunked

4
DATA
0

El archivo es DATA. La línea de estado, las cabeceras, el marcador de tamaño y la estructura de terminación pertenecen a HTTP. Eliminar un número fijo de bytes no es seguro porque las longitudes de las cabeceras varían. Copiar todo lo que sigue a la primera línea en blanco todavía deja el encuadre de fragmentos, y las respuestas informativas pueden preceder a la respuesta final.

Para una descarga normal, sustituya la copia de socket sin procesar a archivo por la interfaz de cuerpo de respuesta del cliente HTTP. Configure su proxy, valide el estado final y transmita el cuerpo a una salida temporal. El cliente gestiona el encuadre del mensaje: los cuerpos delimitados por longitud, por fragmentos y por conexión requieren un análisis distinto.

La codificación del contenido es otra capa. Decida si necesita bytes decodificados del archivo o contenido sin procesar solicitado explícitamente, según el comportamiento documentado del cliente. Los bytes comprimidos no son automáticamente una corrupción del proxy.

Si la aplicación debe conservar código a nivel de socket, asume todas esas reglas de análisis además del manejo de lectura y escritura. Escriba solo el número de bytes que realmente devuelve una lectura, no la capacidad del búfer, y gestione las escrituras parciales. De lo contrario, el contenido obsoleto del búfer puede corromper incluso un cuerpo extraído correctamente.

HTTPS requiere más que despojar una respuesta CONNECT: tras establecer el túnel correctamente, establezca TLS de destino y luego analice la respuesta HTTP interna. Los bytes cifrados que siguen a las cabeceras del proxy no son el archivo descargable.

Deje la salida fallida o incompleta con un nombre temporal. Publíquela solo cuando la transferencia y las comprobaciones del archivo tengan éxito; un archivo no vacío no demuestra una descarga completa.

Artículos relacionados