卷曲到Python请求 - Json

时间:2018-01-29 19:51:12

标签: python json curl python-requests

我想将此Curl代码转换为Python请求。

    from requests_oauthlib import OAuth1Session
    import requests
    from requests_oauthlib import OAuth1
    import json
    from oauthlib.oauth1 import SIGNATURE_TYPE_QUERY, SIGNATURE_TYPE_BODY
    from requests_toolbelt import MultipartEncoder

    url = 'https://KEY:SECRET@www.sendowl.com/api/v1/products' # Yes i did put Key and secret 
    headers = {"Accept": "application/json"}    
    payload = {'product[name]': 'test','product[product_type]': 'digital','product[price]': '23','product[attachment]': ('C:\Users\APPE\Desktop\SendOWL\\audi.jpg', open('C:\Users\APPE\Desktop\SendOWL\\audi.jpg', 'rb'),)}


    result = requests.post(url,headers=headers, params=payload)

这就是我所拥有的,但我收到了500错误

\x

1 个答案:

答案 0 :(得分:1)

  • curl中,-F--form参数用于发布多部分表单数据(文件)。在requests中,您可以使用files参数发布文件。

  • requests中,params参数用于查询字符串数据。如果要在POST请求的正文中发送数据,则应使用data参数。

  • 对于基本身份验证,您只需使用auth参数即可。

所以,你的python代码看起来应该是这样的,

import requests

url = 'https://www.sendowl.com/api/v1/products.xml' 
headers = {"Accept": "application/json"}   
auth = ('KEY', 'SECRET') 
data = {'product[name]':'test', 'product[product_type]':'digital', 'product[price]':'23'}
files = {'product[attachment]': open('C:\Users\APPE\Desktop\SendOWL\\audi.jpg', 'rb')}
r = requests.post(url, auth=auth, headers=headers, data=data, files=files)

print(r.text)