Red de conocimiento informático - Problemas con los teléfonos móviles - Python envía solicitudes http y recibe respuestas http a través de métodos get y post

Python envía solicitudes http y recibe respuestas http a través de métodos get y post

El ejemplo de este artículo describe cómo Python envía solicitudes http y recibe respuestas http a través de los métodos get y post. Compártelo con todos para tu referencia.

Los detalles son los siguientes:

El CGI utilizado para las pruebas se llama test.py y se coloca en el directorio cgi-bin de Apache:

# !/usr/bin /python

importar cgi

def main():

imprimir Tipo de contenido: texto/htmln

form = cgi.FieldStorage ()

if form.has_key(ServiceCode) y form[ServiceCode].value != :

print h1 Hola, form[ServiceCode].value, / h1

else:

imprimir h1 ¡Error! Ingrese el nombre./h1

main()

python envía la publicación y obtiene solicitudes

Obtener solicitud:

Cuando se utiliza el método get, los datos de la solicitud se colocan directamente en la URL.

Método 1.

7

8

importar urllib

importar urllib2

url =

req = urllib2.Request(url)

solicitud de impresión

res_data = urllib2.urlopen(req)

res = res_data.read()

imprimir res

Método 2,

7

importar httplib

url =

conn = httplib.HTTPConnection(192.168.81.16)

conn.request(método=GET, url=url)

respuesta = conn.getresponse( )

res= respuesta.read()

imprimir res

solicitud de publicación:

Cuando se utiliza el método de publicación, los datos son colocado en datos O en el cuerpo, no se puede colocar en la URL. Si se coloca en la URL, se ignorará.

Método 1,

importar urllib

importar urllib2

test_data = {ServiceCode: aaaa, b: bbbbb}

test_data_urlencode = urllib.urlencode(test_data)

requrl =

req = urllib2.Request(url = requrl, data =test_data_urlencode)

solicitud de impresión

res_data = urllib2.urlopen(req)

res = res_data.read()

imprimir res

Método 2,

p>

11

importar urllib

importar httplib

test_data = {ServiceCode: aaaa, b: bbbbb}

test_data_urlencode = urllib.urlencode(test_data)

requrl =

headerdata = {Host: 192.168.81.16}

conn = httplib.HTTPConnection( 192.168.81.16)

conn.request(método=POST, url=requrl, cuerpo=test_data_urlencode, encabezados = headerdata)

respuesta = conn.getresponse()

res= respuesta .read()

print res

No estoy seguro del uso de json en Python, así que utilicé temporalmente el método urllib.urlencode(test_data);

Módulo urllib, la diferencia entre urllib2 y httplib

httplib implementa los protocolos de cliente de http y https, pero en Python, los módulos urllib y urllib2 encapsulan httplib en un nivel superior.

Presentando las funciones utilizadas en el ejemplo:

1. Función HTTPConnection

httplib.HTTPConnection(host[,port[,stict[,timeout]] ] )

Este es el constructor, que representa una interacción con el servidor, es decir, solicitud/respuesta

host identifica el host del servidor (IP del servidor o nombre de dominio)

El valor predeterminado del puerto es 80

El modo estricto es Falso, lo que indica si se debe generar una excepción BadStatusLine cuando la línea de estado devuelta por el servidor no se puede analizar

Por ejemplo :

conn = httplib.HTTPConnection(192.168.81.16, 80) Establece una conexión con el servidor.

2. Función HTTPConnection.request(método, url[, cuerpo[, encabezado]])

Esta es la forma de enviar una solicitud al servidor

solicitud de método, generalmente publicar u obtener,

Por ejemplo:

método=POST o método=Obtener

url del recurso solicitado, recurso solicitado (página o CGI , aquí somos CGI)

Por ejemplo:

url=

o

url=

cuerpo debe enviarse Los datos al servidor pueden ser json o el formato anterior. json necesita llamar al módulo json

encabezados solicitados encabezado http headerdata = {Host: 192.168.81.16}

Por ejemplo:

test_data = {ServiceCode: aaaa, b: bbbbb}

test_data_urlencode = urllib.urlencode(test_data)

requrl =

headerdata = {Host: 192.168.81.16}

conn = httplib.HTTPConnection(192.168.81.16, 80)

conn.request(method=POST, url=requrl, body=test_data_urlencode, headers = headerdata)

conn debe cerrarse después de su uso, función conn.close()

3. HTTPConnection.getresponse()

Esta es Obtener la respuesta http. El objeto devuelto es una instancia de HTTPResponse.

4. Introducción a HTTPResponse:

Las propiedades de HTTPResponse son las siguientes:

read([amt]) obtiene el cuerpo del mensaje de respuesta, amt significa lectura del flujo de respuesta Especifique bytes de datos. Si no se especifica, se leerán todos los datos;

getheader(name[, default]) obtiene el encabezado de la respuesta. El nombre representa el nombre de dominio del encabezado. no hay nombre de dominio de encabezado, predeterminado Se usa para especificar el valor de retorno

getheaders() obtiene encabezados en forma de lista

Por ejemplo:

1

2

3

4

5

fecha=response.getheader(fecha);

imprimir fecha

resheader=

resheader=response.getheaders();

imprimir resheader

Información del encabezado de respuesta en forma de columna:

1

2

3

[(longitud del contenido, 295), (rangos de aceptación, bytes) , (servidor, Apache), (última modificación, sábado 31 de marzo de 2012 10:07:02 GMT), (conexión, cierre), (etag, e8744-127-4bc871e4fdd80), (fecha, lunes 3 de septiembre de 2012 10 :01:47 GMT), (tipo de contenido, texto/html)]

fecha=response.getheader(fecha);

imprimir fecha

Obtener el valor de fecha del encabezado de respuesta.

Espero que este artículo sea útil para la programación en Python de todos.