将cURL请求转换为python

时间:2017-12-07 04:57:31

标签: python curl pycurl httplib2

我必须发出一个向服务器发送信息的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 个答案:

答案 0 :(得分:0)

感谢Galen的评论和重新开始,以下是我最终格式化并让它发挥作用的方式:

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