2010-02-03 20 views
7

pensé que un post enviado toda la información de las cabeceras HTTP cuando se usa el método POST (no estoy bien informado sobre este tema, obviamente), así que estoy confundido por qué usted tiene que urlencode() los datos a un formato key=value&key2=value2. ¿Cómo que el formateo de entrar en juego cuando se utiliza la POST ?:Python: urllib2.urlopen (url, datos) ¿Por qué tienes que urllib.urlencode() los datos?

# Fail 
data = {'name': 'John Smith'} 
urllib2.urlopen(foo_url, data) 

pero

# Success 
data = {'name': 'John Smith'} 
data = urllib.urlencode(data) 
urllib2.urlopen(foo_url, data) 

Respuesta

9

Se relaciona con el "Content-Type" de cabecera: el cliente debe tener una idea de cómo se codifican los datos de POST o de lo contrario ¿cómo podría saber cómo decodificarlo?

La forma estándar de hacer esto es a través formato de codificaciónapplication/x-www-form-urlencoded.

Ahora, si la pregunta es "¿Por qué necesitamos para codificar?", La respuesta es "porque tenemos que ser capaces de definir la carga útil en el contenedor HTTP".

2

de datos debe estar en el formato estándar aplicación urlencoded-x-www-form/. urlencode convierte sus argumentos a una cadena con codificación URL.

Cuestiones relacionadas