• Publicidad

Datos enviados por POST a una web

Todo lo relacionado con el desarrollo Web con Perl: desde CGI hasta Mojolicious

Datos enviados por POST a una web

Notapor desdechina » 2013-04-22 05:27 @268

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?
desdechina
Perlero nuevo
Perlero nuevo
 
Mensajes: 38
Registrado: 2013-01-11 08:21 @389

Publicidad

Re: Datos enviados por POST a una web

Notapor explorer » 2013-04-22 07:59 @374

Un momento...

¿Aparece shipment__orderLineDocKg#{index} o shipment__orderLineDocKg1?
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Datos enviados por POST a una web

Notapor desdechina » 2013-04-22 08:13 @384

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...
desdechina
Perlero nuevo
Perlero nuevo
 
Mensajes: 38
Registrado: 2013-01-11 08:21 @389

Re: Datos enviados por POST a una web

Notapor explorer » 2013-04-22 09:23 @433

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.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Datos enviados por POST a una web

Notapor desdechina » 2013-04-24 07:22 @349

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.
desdechina
Perlero nuevo
Perlero nuevo
 
Mensajes: 38
Registrado: 2013-01-11 08:21 @389

Re: Datos enviados por POST a una web

Notapor explorer » 2013-04-24 16:18 @721

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.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Datos enviados por POST a una web

Notapor desdechina » 2013-04-25 03:29 @187

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.
desdechina
Perlero nuevo
Perlero nuevo
 
Mensajes: 38
Registrado: 2013-01-11 08:21 @389

Re: Datos enviados por POST a una web

Notapor explorer » 2013-04-25 05:27 @268

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.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Datos enviados por POST a una web

Notapor desdechina » 2013-04-25 08:41 @404

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?
desdechina
Perlero nuevo
Perlero nuevo
 
Mensajes: 38
Registrado: 2013-01-11 08:21 @389

Re: Datos enviados por POST a una web

Notapor explorer » 2013-04-25 15:01 @668

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.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España


Volver a Web

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 10 invitados