Как установить параметры GET с помощью PyCurl?

Я пытаюсь сделать запрос GET для REST API, используя PycURL. Я могу успешно выполнить запрос, если не передам никаких параметров. Я также могу сделать запрос POST, выполнив следующие действия:

curl.setopt(pycurl.POSTFIELDS, post_data)

Я хочу сделать запрос на получение, который включает параметры входа. Если я попытаюсь использовать строку выше для передачи параметров, вместо этого он попытается выполнить POST. Я не могу понять, как установить параметры входа и сделать запрос GET.

Любая помощь будет оценена по достоинству.


person Andrew    schedule 17.03.2011    source источник


Ответы (2)


Как и обычный URL-адрес в браузере, параметры GET кодируются и добавляются после ? к URL-адресу. Используя urllib.urlencode Python, вы можете сделать следующее:

import urllib
import pycurl

url = 'http://www.google.com/search'
params = {'q': 'stackoverflow answers'}

c = pycurl.Curl()
c.setopt(c.URL, url + '?' + urllib.urlencode(params))
... # and so on and so forth ...
person Mahmoud Abdelkader    schedule 17.03.2011
comment
В дополнение к этому ответу вы можете добавить параметр HTTPGET. c.setopt(pycurl.HTTPGET, 1) - person Vyke; 07.11.2013
comment
Вам может понадобиться import urllib.parse, затем urllib.parse.urlencode(params) в python 3 - person Brown nightingale; 14.02.2018

Кажется, нет опции pycurl.GETFIELDS, поэтому вам нужно будет передать эти параметры в URL-адресе, например:

http://your_url/some_path?param1=value1&param2=value2

где вы должны заменить param1, param2, value1 и value2 любыми значениями, которые вы сохранили в post_data.

person Jong Bor Lee    schedule 17.03.2011