Página 1 de 1

Datos enviados por POST a una web

NotaPublicado: 2013-04-22 05:27 @268
por desdechina
Estoy sacando datos de una página web y tengo problemas con unos datos.

En el código de la página me aparece así: id="shipment__orderLineDocKg#{index}" (es una tabla) y yo en mi código Perl lo pongo así: 'shipment__orderLineDocKg1'=>'2', cuando hago el POST.

Pues nada. Lo he probado todo y no hay manera.

Para otros valores tipo text box no he tenido problema: id="shipment__currency" -> 'shipment__currency'=>'EUR'.

¿Alguna idea?

Re: Datos enviados por POST a una web

NotaPublicado: 2013-04-22 07:59 @374
por explorer
Un momento...

¿Aparece shipment__orderLineDocKg#{index} o shipment__orderLineDocKg1?

Re: Datos enviados por POST a una web

NotaPublicado: 2013-04-22 08:13 @384
por desdechina
shipment__orderLineDocKg#{index} es lo que aparece.
Pero en algún momento entre las mil pruebas que he hecho ha aparecido shipment__orderLineDocKg1.
Una prueba más...

Re: Datos enviados por POST a una web

NotaPublicado: 2013-04-22 09:23 @433
por explorer
Da la sensación de que #{index} es una parte que un JavaScript va a modificar, quizás cuando pulsas el botón de Submit.

Si no es así, entonces debe formar parte del identificador del formulario, así que debes escribirlo tal cual.

Con un programa como tcpdump se podría ver qué es lo que se transmite en el momento de hacer un POST de forma manual.

Re: Datos enviados por POST a una web

NotaPublicado: 2013-04-24 07:22 @349
por desdechina
Nada, que no soy capaz de pasar variables para obtener datos.
Mira. Este es el código de la web:

Sintáxis: [ Descargar ] [ Ocultar ]
Using html4strict Syntax Highlighting
  1. <input type="hidden" name="shipment__orderLineDocCount" id="shipment__orderLineDocCount" value="1" />
  2.             <input type="hidden" name="shipment__orderLineDocMaxCount" id="shipment__orderLineDocMaxCount" value="10" />
  3.             <div class="">
  4.               <table class="width-334" cellpadding="0" cellspacing="0">
  5.                 <thead class="height-25">
  6.                   <tr class="background-gray-light">
  7.                     <th class="border-right-white align-center" colspan="3" align="center">Quantit&eacute;</th>
  8.                     <th class="padding-left-12">
  9.                         <span class="float-left line-heigh-20">Kilo</span>
  10.                         <img src="images/question.png" name="H_HSH305T" alt="buz_field_1_12_Kilo" border="0" class="cursor-poiter float-left margin-left-3" />
  11.                     </th>
  12.                     <th class="padding-left-12 border-right-white">
  13.                         <span class="float-left line-heigh-20">Grammes</span>
  14.                         <img src="images/question.png" name="H_HSH306T" alt="buz_field_1_13_Grams" border="0" class="cursor-poiter float-left margin-left-3" />
  15.                     </th>
  16.                     <th class="borderBottom"></th>
  17.                   </tr>
  18.                 </thead>
  19.                 <tfoot>
  20.                   <tr>
  21.                     <td colspan="7" class="padding-bottom-13 padding-top-13">
  22.                       <span class="span-a" onclick="Shipment.addOrderLineDoc();"><img src="images/add.png" alt="add" height="12" width="12" align="left" /><a>Ajouter</a> nouvelle ligne</span>
  23.                       <em>(max. 10)</em>
  24.                     </td>
  25.                   </tr>
  26.                   <tr class="background-gray-light height-28">
  27.                     <td colspan="2" class="border-right-white" align="center">Total</td>
  28.                     <td class="border-right-white text-bold width-94" align="center">
  29.                       <span class="float-left line-heigh-20"><strong id="countOrderLineDoc">1</strong> <strong>Document(s)</strong></span>
  30.                       <img src="images/question.png" name="H_NUMBOXT" alt="buz_field_1_3_number_boxpallets" border="0" class="cursor-poiter float-left margin-left-3" />
  31.                     </td>
  32.                     <td colspan="2" class="border-right-white" align="right">
  33.                       <span class="text-bold" id="totalWeightOrderLineDoc">0</span>
  34.                       <span>&nbsp;</span>
  35.                       <span>kg&nbsp;</span>
  36.                     </td>
  37.                     <td class="borderLeft"></td>
  38.                   </tr>
  39.                 </tfoot>
  40.                 <tbody id="tableRowsAmp">
  41.                   <tr class="background-gray-light">
  42.                     <td class="border-right-white" colspan="3" align="center">1</td>
  43.                     <td class="padding-left-12">
  44.                       <input class="width-40 inputw" value="#{kg}" size="3" id="shipment__orderLineDocKg#{index}" name="shipment__orderLineDocKg#{index}" type="text" onchange="Shipment.updateOrderLineDoc()" onkeydown="return limitCharacters(event)" onfocus="Shipment.removeDefault(this)" onblur="Shipment.addDefault(this)" />
  45.                     </td>
  46.                     <td class="padding-left-12 border-right-white">
  47.                       <input class="width-40 inputw" maxlength="3" value="#{gram}" size="3" id="shipment__orderLineDocGram#{index}" name="shipment__orderLineDocGram#{index}" type="text" onchange="Shipment.updateOrderLineDoc()" onkeydown="return limitCharacters(event)" onfocus="Shipment.removeDefault(this)" onblur="Shipment.addDefault(this)" />
  48.                       <span> kg</span>
  49.                     </td>
  50.                     <td class="padding-lr-11">
  51.                       <div onclick="Shipment.deleteOrderLineDoc(this)" id="buttonDeleteOrderLineDoc#{index}" class="xButtonDeleteOrderLineDoc hide">
  52.                         <div align="center"><img src="images/delete.png" width="13" height="13" alt="Supprimer" /></div>
  53.                         <div class="txtOrange" align="center"><a href="javascript&#058;void(0)">Supprimer</a></div>
  54.                       </div>
  55.                     </td>
  56.                   </tr>
  57.                 </tbody>
  58.               </table>
  59.               <div class="error-box hide"></div>
  60.             </div>
  61.           </div>
  62.         </div>
  63.       </div>
  64.     </div>
Coloreado en 0.006 segundos, usando GeSHi 1.0.8.4


Y no sé cómo enviar un valor al campo orderLineDocKg#{index} al hacer el POST.

Re: Datos enviados por POST a una web

NotaPublicado: 2013-04-24 16:18 @721
por explorer
Yo no veo nada raro, pero sigo pensando que el nombre es modificado por JavaScript o, quizás... que el código JavaScript toma estos controles como plantillas, y a partir de él genera una caja por cada producto (una fila de tabla por cada producto). En ese caso, sí que hay que sospechar que cambia #{index} por un número.

Si no ocurre nada de eso, pues entonces ese es su nombre. Un poco raro, pero lo será.

Lo dicho: es mejor usar un tcpdump para ver el contenido de los paquetes que se envían.

Re: Datos enviados por POST a una web

NotaPublicado: 2013-04-25 03:29 @187
por desdechina
Ya tengo el Windump y estoy viendo el tráfico de mi máquina con la otra pero no sé cómo ver esas variables.
No entiendo muy bien cómo funciona.

Re: Datos enviados por POST a una web

NotaPublicado: 2013-04-25 05:27 @268
por explorer
Por defecto, el dump sacará los paquetes de todo el tráfico de la máquina. Pero se puede indicar que solo filtre el correo dirigido al servidor web donde queremos conectarnos, y al puerto 80.

Y la salida, con la opción -A, sacará el contenido de los paquetes en formato ASCII, así que será fácil de ver la petición que se manda.

Eso sí: la petición debes hacerla con un navegador normal, no con el programa. Así sabremos si el código JavaScript afecta o no a la petición.

Re: Datos enviados por POST a una web

NotaPublicado: 2013-04-25 08:41 @404
por desdechina
Loca me has dejado.
Llevo tres días con esto y sé que es una bobada ¡¡¡pero no hay manera!!!

Mirando la respuesta del servidor con el depurador veo esto:

Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
   '_method' => 'POST'
   '_uri' => URI::https=SCALAR(0x32e6dcc)
      -> 'https://......
   '_uri_canonical' => URI::https=SCALAR(0x32e6dcc)
      -> REUSED_ADDRESS
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4


Imagino que el error me lo indica con "REUSED_ADDRESS".

Creo que estoy pasando mal las variables al hacer el POST, o me faltan...

¿Hay alguna forma de saber esto? Es decir, ¿cómo puedo saber si el valor que le doy a una variable es válido?

Re: Datos enviados por POST a una web

NotaPublicado: 2013-04-25 15:01 @668
por explorer
REUSED_ADDRESS creo que se refiere a que cierto contenido en ese hash está repetido o apunta al mismo objeto.

La clave está en el origen: en el formulario y en la empresa que ha creado ese formulario.

¿No puedes ponerte en contacto con ellos para saber cómo funciona? ¿O solicitarles un método más cómodo para hacer esas peticiones. En algunos casos existen API públicas, siguiendo algún protocolo conocido (RPC, SOAP, o un simple servicio web con intercambio de archivos XML, YAML o JSON).

Desde luego, la opción del dump es la mejor para saber qué es lo que se intercambia entre nuestra máquina y el servidor web.

En Firefox existe complementos para mostrar esas cabeceras (Firebug, Live HTTP Headers) y alguno específico para hacer peticiones y examinar los resultados.

Aquí hay más opciones para hacer pruebas con POST.