requests libreria httperror cliente python urllib httplib

libreria - urllib python install



¿Cómo enviar la solicitud POST? (3)

No puede lograr solicitudes POST usando urllib (solo para GET), en su lugar intente usar el módulo de requests , por ejemplo:

Ejemplo 1.0:

import requests base_url="www.server.com" final_url="/{0}/friendly/{1}/url".format(base_url,any_value_here) payload = {''number'': 2, ''value'': 1} response = requests.post(final_url, data=payload) print(response.text) #TEXT/HTML print(response.status_code, response.reason) #HTTP

Ejemplo 1.2:

>>> import requests >>> payload = {''key1'': ''value1'', ''key2'': ''value2''} >>> r = requests.post("http://httpbin.org/post", data=payload) >>> print(r.text) { ... "form": { "key2": "value2", "key1": "value1" }, ... }

Ejemplo 1.3:

>>> import json >>> url = ''https://api.github.com/some/endpoint'' >>> payload = {''some'': ''data''} >>> r = requests.post(url, data=json.dumps(payload))

Encontré este script en línea:

import httplib, urllib params = urllib.urlencode({''number'': 12524, ''type'': ''issue'', ''action'': ''show''}) headers = {"Content-type": "application/x-www-form-urlencoded", "Accept": "text/plain"} conn = httplib.HTTPConnection("bugs.python.org") conn.request("POST", "", params, headers) response = conn.getresponse() print response.status, response.reason 302 Found data = response.read() data ''Redirecting to <a href="http://bugs.python.org/issue12524">http://bugs.python.org/issue12524</a>'' conn.close()

Pero no entiendo cómo usarlo con PHP o qué es todo dentro de la variable params o cómo usarlo. ¿Puedo por favor tener un poco de ayuda tratando de hacer que esto funcione?


Si necesita que su script sea portátil y prefiere no tener dependencias de terceros, esta es la forma en que envía la solicitud POST puramente en Python 3.

from urllib.parse import urlencode from urllib.request import Request, urlopen url = ''https://httpbin.org/post'' # Set destination URL here post_fields = {''foo'': ''bar''} # Set POST fields here request = Request(url, urlencode(post_fields).encode()) json = urlopen(request).read().decode() print(json)

Muestra de salida:

{ "args": {}, "data": "", "files": {}, "form": { "foo": "bar" }, "headers": { "Accept-Encoding": "identity", "Content-Length": "7", "Content-Type": "application/x-www-form-urlencoded", "Host": "httpbin.org", "User-Agent": "Python-urllib/3.3" }, "json": null, "origin": "127.0.0.1", "url": "https://httpbin.org/post" }


Si realmente quieres manejar con HTTP usando Python, recomiendo las Solicitudes: HTTP for Humans . El inicio rápido de POST adaptado a su pregunta es:

>>> import requests >>> r = requests.post("http://bugs.python.org", data={''number'': 12524, ''type'': ''issue'', ''action'': ''show''}) >>> print(r.status_code, r.reason) 200 OK >>> print(r.text[:300] + ''...'') <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <title> Issue 12524: change httplib docs POST example - Python tracker </title> <link rel="shortcut i... >>>