我正在使用python python请求来连接api api的示例连接是
curl -H"Authorization:Bearer <token>"-H"Content-Type: application/json" -d '{"filter" :{}}'https://sandbox-api.flipkart.net/sellers/orders/search
我的代码是:
import requests
class FlipkartAPI:
def __init__(self, token):
self.token = token
def search_orders(self):
headers = {'Authorization':'Bearer %s',
'Content-Type':'application/json'} % self.token
url = "https://api.flipkart.net/sellers/orders/search"
return requests.get(url, params = headers)
变量令牌的类型为unicode。
我的代码出了什么问题?
编辑:
我获取订单的代码:
from auth import Authentication
from api import FlipkartAPI
app_id = 'app id'
app_secret = 'app secret'
auth = Authentication(app_id, app_secret)
get_token = auth.get_access_token()
token_str = get_token.json()
token = token_str['access_token']
fk = FlipkartAPI(token)
orders = fk.search_orders()
print orders
我可以生成令牌意味着我的应用ID和应用秘密是正确的我有权获得访问权限。 也链接到api文档:
答案 0 :(得分:2)
您需要将encodeURIComponent
操作应用于格式占位符的字符串,而不是字典:
%
您还使用了错误的关键字参数,错误的HTTP方法,并且没有设置JSON有效负载。
headers = {'Authorization':'Bearer %s' % self.token,
'Content-Type':'application/json'}
,而不是headers
params
curl
开关表示发出了POST请求,而不是GET -d
filter
命令的正确翻译是:
curl
headers = {'Authorization':'Bearer %s',
'Content-Type':'application/json'} % self.token
url = "https://api.flipkart.net/sellers/orders/search"
filter = {'filter': {}}
return requests.post(url, json=filter, headers=headers)
版本已添加到json
版本2.4.2;如果你有一个旧版本,你需要自己编码JSON主体:
requests