将 cURL 请求翻译成 python

Translating cURL request to 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)

这几天我进行了大量的搜索和试验。任何帮助是极大的赞赏。谢谢

感谢 Galen 的评论和全新的开始,以下是我最终格式化并使其正常工作的方式:

  • 而不是 c.USERNAME 我不得不使用 c.USERPWD。这是一个 API 键 而不是用户名。
  • 将不同的数据值重新格式化为:{'name': 'Sam', 'city': 'Somewhere', 等等...}
  • 在传递给 c.POSTFIELDS
  • 之前,根据文档使用了 urlencode