Перевод cURL-запроса в python
Я должен сделать запрос cURL, который отправляет информацию на сервер, рабочий пример запроса выглядит так:
curl "https://api.XX.com" -u ":test_KayuXJKEdc" -d "name=Sam" -d "address=123 Mockingbird" -d "city=Somewhere"
Я пробовал pycurl, httplib2 и запросы, я не могу понять, как правильно отформатировать это. Нерабочий пример Pycurl из одной из многих попыток:
import pycurl
user = ':test_KayuXJKEdc'
name = 'name=Sam'
address = 'address=123 Mockingbird'
city = 'city=Somewhere'
c = pycurl.Curl()
data = BytesIO()
c.setopt(c.URL, 'https://api.XX.com')
c.setopt(pycurl.USERNAME, user)
c.setopt(pycurl.POSTFIELDS, name)
c.setopt(pycurl.POSTFIELDS, address)
c.setopt(pycurl.POSTFIELDS, city)
c.setopt(c.WRITEFUNCTION, data.write)
c.perform()
c.close()
result = json.loads(data.getvalue().decode('latin-1'))
print(result)
Я провел много поисков и экспериментов в течение пары дней. Любая помощь с благодарностью. Спасибо
1 ответ
Решение
Благодаря комментариям Галена и новому началу, вот как я закончил форматирование и заставил его работать:
- Вместо c.USERNAME мне пришлось использовать c.USERPWD. Это был ключ API, а не имя пользователя.
- Переформатировал различные значения данных, чтобы они выглядели так: {'name': 'Sam', 'city': 'Somewhere' и т. Д...}
- Использовал urlencode согласно документации перед передачей в c.POSTFIELDS