Pregunta

Estoy intentando desarrollar un gadget de barra lateral que automatiza el proceso de comprobación de una página web para la evolución de mi cuota de transferencia. Estoy casi en ella, pero no hay un último paso que necesito para que funcione: Envío de un HttpRequest con los datos correctos de la POST a una página php. El uso de un plugin de Firefox, aquí es lo que el "Content-Type" de las miradas de cabecera como:

Content-Type=multipart/form-data; boundary=---------------------------99614912995

con el parámetro "límite" pareciendo ser al azar, y la POSTDATA es la siguiente:

POSTDATA =-----------------------------99614912995
Content-Disposition: form-data; name="SOMENAME"

Formulaire de Quota
-----------------------------99614912995
Content-Disposition: form-data; name="OTHERNAME"

SOMEDATA
-----------------------------99614912995--

No entiendo cómo emular correctamente el POSTDATA con el misterio "límite" parámetro regresando.

qué alguien sabe cómo puedo solucionar esto?

¿Fue útil?

Solución

El parámetro límite se establece en un número de guiones más una cadena aleatoria al final, pero puede establecer que a nada en absoluto. El problema es, si en la serie de límite hasta en los datos de la solicitud, que serán tratados como límite.

Para algunos consejos, y una función de ejemplo para el envío de multipart / form-data ver mi respuesta a esta pregunta . No sería demasiado difícil de modificar esa función a utilizar un bucle para cada parte que desea enviar.

Otros consejos

Para cita de la RFC 1341, sección 7.2.1 , lo que considera que son los bits correspondientes en el parámetro boundary de la cabecera Content-Type (por MIME):

  

Todos los subtipos de "varias partes" comparten una sintaxis común ...

     

El campo Content-Type para entidades multiparte requiere un parámetro, "límite", que se utiliza para especificar el límite de encapsulación. El límite de encapsulación se define como una línea que consiste en su totalidad de dos caracteres de guión ( "-", el código decimal 45). Seguido por el valor del parámetro límite del campo Content-Type cabecera

y luego aclara:

  

Por lo tanto, un campo de cabecera Content-Type de varias partes típico podría tener este aspecto:

 Content-Type: multipart/mixed; boundary=gc0p4Jq0M2Yt08jU534c0p
  

Esto indica que la entidad se compone de varias partes, cada una en sí con una estructura que es sintácticamente idéntico a un mensaje de RFC 822, excepto que el área de cabecera podría ser completamente vacío, y que las partes están cada uno precedido por la línea        --gc0p4Jq0M2Yt08jU534c0p

A tener en cuenta:

  1. El límite de encapsulación debe ocurrir en el principio de una línea, es decir, después de una CRLF (Retorno de carro-Line Feed)
  2. El límite debe ser seguida inmediatamente ya sea por otro CRLF y los campos de cabecera para la siguiente parte, o por dos CRLFs, en cuyo caso no hay campos de cabecera para la siguiente parte (y por lo tanto se supone que es de Content- tipo text / plain).
  3. fronteras de encapsulación no debe aparecer dentro de los encapsulados, y debe ser no más de 70 caracteres, sin contar los dos guiones principales.

Por último, pero no menos importante:

  

El límite de encapsulación después de la última parte del cuerpo es un delimitador distinguido que indica que no hay partes adicionales cuerpo seguirá. Tal un delimitador es idéntico a los delimitadores anteriores, con la adición de dos guiones más al final de la línea:

 --gc0p4Jq0M2Yt08jU534c0p-- 

Espero que esto ayude a alguien más en el futuro, ya que tuve que deambulan por un tiempo antes de obtener la imagen completa (por favor asegúrese de leer los RFC necesarias para obtener la comprensión más profunda).

La especificación actual para multipart / form-datos está en RFC 7578 . Límite está definido en Sección 4.1 .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top