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...
>>>