2011-02-13 20 views
7

que estoy tratando de hacer una cosa muy simple, construir una URL para una solicitud GET que contiene un número de puerto y algunos parámetros, como se deduce http://localhost:8080/read?date=whateverConstruir solicitud GET HTTP con el número de puerto y parámetros

He probado varios formas sin éxito, no debería ser demasiado difícil, pero no puedo encontrar una solución.

espero que alguien me ayuda, que sería muy apreciada

Gracias de antemano

Respuesta

12

La respuesta anterior fue no a la pregunta que en realidad le preguntó. Pruebe esto:

import urllib 

myPort = "8080" 
myParameters = { "date" : "whatever", "another_parameters" : "more_whatever" } 

myURL = "http://localhost:%s/read?%s" % (myPort, urllib.urlencode(myParameters)) 

Básicamente, urllib tiene una función para hacer lo que quiera, llamada urlencode. Páselo a un diccionario que contenga los pares de parámetro/parámetro_parámetro que desee, y tendrá la cadena de parámetros adecuada que necesita después del '?' en tu url

+1

Oye, he intentado una solución similar a eso. El problema es que a pesar de que la url está correctamente construida, obtengo este error: 'httplib.InvalidURL: puerto no numérico: '8080/read? InitialDate = whatever'' ¿Hay alguna otra forma de hacer esto usando una biblioteca diferente o algo así? ¡Gracias de cualquier manera! –

-3
data = urllib2.urlopen(url).read() 
+0

Por favor, ¿puede proporcionar una respuesta más elaborada? Soy nuevo en Python y me gustaría ver cómo se hace paso a paso. Gracias –

+0

Compruebe los documentos de Python existentes que contengan suficientes ejemplos: http://docs.python.org/library/urllib2.html –

1

He aquí una sencilla clase genérica que se puede (re) utilizar:

import urllib 
class URL: 
    def __init__(self, host, port=None, path=None, params=None): 
     self.host = host 
     self.port = port 
     self.path = path 
     self.params = params 

    def __str__(self): 
     url = "http://" + self.host 
     if self.port is not None: 
      url += ":" + self.port 
     url += "/" 
     if self.path is not None: 
      url += self.path 
     if self.params is not None: 
      url += "?" 
      url += urllib.urlencode(self.params) 
     return url 

por lo que podría hacer:

Cuestiones relacionadas