Как отправить запрос POST?

Я нашел этот скрипт онлайн:

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() 

Но я не понимаю, как использовать его с PHP или что все внутри переменной params или как его использовать. Могу ли я, пожалуйста, немного помочь с попыткой заставить это работать?

  • можно ли использовать xpath с BeautifulSoup?
  • Javascript unescape () против Python urllib.unquote ()
  • Ошибка Python 2.7.10 "из urllib.request import urlopen" без модуля с именем request
  • Почему urllib.urlopen.read () не соответствует исходному коду?
  • Как сохранить «полную веб-страницу» не только базовый html с помощью Python
  • Сохранение файлов, загруженных из Urlretrieve, в другую папку
  • Урлобин Urllib на некоторых сайтах (например, StackApps api): возвращает результаты мусора
  • Python URLLib / URLLib2 POST
  • 3 Solutions collect form web for “Как отправить запрос POST?”

    Если вы действительно хотите обрабатывать HTTP с помощью Python, я настоятельно рекомендую « Запросы: HTTP для людей» . Быстрый старт POST, адаптированный к вашему вопросу:

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

    Иногда вы хотите, чтобы ваш скрипт был переносимым, и вы не хотите использовать сторонние библиотеки. Так вы отправляете запрос POST в 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) 

    Пример вывода:

     { "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" } 

    Вы не можете получать запросы POST с помощью urllib (только для GET), вместо этого попробуйте использовать модуль requests , например:

    Пример 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 

    Пример 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" }, ... } 

    Пример 1.3:

     >>> import json >>> url = 'https://api.github.com/some/endpoint' >>> payload = {'some': 'data'} >>> r = requests.post(url, data=json.dumps(payload)) 
    Python - лучший язык программирования в мире.