Znalazłem ten skrypt online:
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()
Ale nie rozumiem, jak używać go z PHP ani czym jest wszystko w zmiennej params, ani jak jej używać. Czy mogę prosić o pomoc w staraniu się, aby to zadziałało?
live http header
dodatku do firefoxa, a następnie otwarcie adresu URL w firefoxie i zobaczenierequest/response
adresu URL wlive http header
dodatku, niż zrozumiesz, coparams and headers
robisz w kodzie.Odpowiedzi:
Jeśli naprawdę chcesz obsługiwać HTTP za pomocą Pythona, bardzo polecam Requests: HTTP for Humans . Szybki start POST dostosowany do twojego pytania to:
źródło
json={'number': 12524...
zamiastdata=...
Jeśli potrzebujesz, aby twój skrypt był przenośny i wolałbyś nie mieć żadnych zewnętrznych zależności, w ten sposób wysyłasz żądanie POST wyłącznie w Pythonie 3.
Przykładowe dane wyjściowe:
źródło
Nie możesz osiągnąć żądań POST przy użyciu
urllib
(tylko dla GET), zamiast tego spróbuj użyćrequests
modułu, np .:Przykład 1.0:
Przykład 1.2:
Przykład 1.3:
źródło
Użyj
requests
biblioteki, aby GET, POST, PUT lub DELETE, naciskając punkt końcowy interfejsu API REST. Przekaż resztę adresu URL punktu końcowego interfejsu APIurl
, ładunek (dict)data
i nagłówek / metadane wheaders
źródło
headers
parametr jest niepoprawny, a także nie mamy tutaj żadnego jsona. Powinniśmy użyćjson.dumps(pauload)
Twój słownik danych zawiera nazwy pól wejściowych formularza, po prostu trzymaj się ich wartości, aby znaleźć wyniki. widok formularza Nagłówek konfiguruje przeglądarkę do pobierania deklarowanych danych. Z biblioteką żądań łatwo jest wysłać POST:
Więcej informacji o obiekcie żądania: https://requests.readthedocs.io/en/master/api/
źródło
Jeśli nie chcesz używać modułu, który musisz zainstalować
requests
, a Twój przypadek użycia jest bardzo prosty, możesz go użyćurllib2
Zobacz dokumentację
urllib2
tutaj: https://docs.python.org/2/library/urllib2.html .źródło