Article View: es.comp.os.linux.programacion
Article #16777Ayuda del algun guru del Python ese o me paso al Perl :)
From: *puntero_loko
Date: Tue, 21 Mar 2000 00:00
Date: Tue, 21 Mar 2000 00:00
92 lines
4235 bytes
4235 bytes
Buenas, para estrenarme con el python he decidido hacer un programa para
enviar mensajes a m�viles a trav�s de la p�gina de terra. Lo primero,
abr� la p�gina con el navegador, desconect�, rellen� el formulario y el
wwwoffle amablemente me escupi� esto:
-------------------------------------------------------------------------
POST http://www.terra.es/sms/envio.cfm HTTP/1.0
Referer: http://www.terra.es/sms/
Connection: close
User-Agent: Mozilla/4.7 [en] (X11; I; Linux 2.2.15pre13 i586; Nav)
Host: www.terra.es
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, image/png, */*
Accept-Encoding: gzip
Accept-Language: en
Accept-Charset: iso-8859-1,*,utf-8
Content-type: application/x-www-form-urlencoded
Content-length: 109
Proxy-Connection: close
telefono=999999999&fecha=%7Bts+%272000-03-21+16%3A45%3A26%27%7D&mensaje=Prueba+de+mensaje+para+terra
-------------------------------------------------------------------------
La cadena una vez urldecodificada viene a decir:
telefono=9999999&fecha={ts '2000-03-21 16:45:27'}&mensaje=Prueba de mensaje
para terra
As� que escrib� esto en python:
--------------------------------------------------------------------------
#!/usr/bin/env python
import os
import time
import urllib
d_fecha = {}
d_mensaje = {}
d_telefono = {}
# No puedo meter directamente los tres campos en un diccionario porque
# entonces me los saca en el orden que le da la gana al hacer el
# urllib.urlencode que _no_ es el mismo que el orden que crea el
# formulario de la p�gina de terra, no se si el orden importar� mucho,
# pero por si acaso lo hago igual. De este modo lo que hago es tener
# tres diccionarios (urllib.urlencode necesita un diccionario como
# par�metro), que codifico y luego concateno en la cadena 'cadenalfinal'
d_fecha['fecha']=time.strftime("{ts '%Y-%m-%d %H:%M:%S'}",time.gmtime(time.time()))
# El mensaje debe ser igual o menor que 120 caracteres.
d_mensaje['mensaje'] = 'mensaje experimental'
# en la versi�n real del programa aqui puse un tel�fono de movil v�lido. Debe
# tener 9 caracteres.
d_telefono['telefono'] = '123456789'
cadenafinal = urllib.urlencode(d_telefono)
cadenafinal = cadenafinal + '&' + urllib.urlencode(d_fecha)
cadenafinal = cadenafinal + '&' + urllib.urlencode(d_mensaje)
url_terra=urllib.urlopen('http://www.terra.es/sms/envio.cfm', cadenafinal)
pagina_respuesta = url_terra.read()
print pagina_respuesta
---------------------------------------------------------------------------
Se supone que urllib.urlopen con dos par�metros hace un POST a la
direcci�n indicada pasando como mensaje del POST el segundo par�metro
(que tiene como puede verse el mismo formato que los datos que genera el
formulario de la p�gina).
Pues bien, no rula. Se conecta a la p�gina indicada
pero ni post ni leches, me escupe la p�gina por defecto
http://www.terra.es/sms/portada.cfm como si hubiera hecho un GET, en
lugar de darme una de las p�ginas de respuesta (si ha ido bien o mal el
envio del mensaje) como sucederia si hubiera seguido el procedimiento
normal con el navegador. Y por supuesto el mensaje no lo env�a.
A ver si me podeis ayudar (soy novato total en python y adem�s el
protocolo HTTP no me lo conozco casi nada, a ver si me miro el RFC).
Debe ser alguna tonter�a.
--
P�gina personal: http://personal1.iddeo.es/ferkys
----------------
Para obtener mi clave PGP env�ame un correo con el subject "send key pub"
----------------
Technical Details
Message-ID:
<slrn8dfrg7.79g.jajs@Pascual.es>Path:
arc1-ca.pugleaf.net!unknown!not-for-mailShow Full Headers
Complete Article Headers
X-Google-Language: SPANISH,ASCII X-Google-Thread: f86c8,fcc95392be363063,start X-Google-Attributes: gidf86c8,public From: jajs@NOSPAMretemail.es (*puntero_loko) Subject: Ayuda del algun guru del Python ese o me paso al Perl :) Date: 2000/03/21 Message-ID: <slrn8dfrg7.79g.jajs@Pascual.es> X-Deja-AN: 600583209 Content-Transfer-Encoding: 8bit Organization: Iddeo - Retevisi�n Content-Type: text/plain; charset=iso-8859-1 User-Agent: slrn/0.9.6.2 (Linux) Mime-Version: 1.0 Reply-To: jajs@NOSPAMretemail.es Newsgroups: es.comp.os.linux.programacion