我正在尝试通过flipkart的python请求获取pdf流。
但是在跑label.status_code
时我得到了415。
我的代码:
class FlipkartAPI:
def __init__(self, token):
self.token = token
self.session = self.get_session()
def get_session(self):
session = requests.Session()
session.headers.update({'Authorization': 'Bearer %s' % self.token,
'Content-type': 'application/json',})
return session
def fetch_labels(self, orderItemIds):
self.session.headers.update({'Content-type':'application/octet-stream'})
url = "https://api.flipkart.net/sellers/orders/labels"
payload = {'orderItemId':','.join(orderItemIds)}
return self.session.get(url, params=payload, stream=True)
函数调用:
fk = FlipkartAPI(token)
label = fk.fetch_labels(oiids)
print label.status_code
print label.url
print label.content
我明白了:
415
https://api.flipkart.net/sellers/orders/labels?orderItemId=230005995
文档链接为:Documentation 我在互联网上搜索,它说错误是针对不支持的媒体类型。 我做错了什么?
答案 0 :(得分:1)
请勿设置Content-Type
标头,而是发送GET请求,该请求没有正文,因此无法为设置类型。
相反,请设置Accept
标头,如文档中所述。不要为整个会话设置该标头,仅针对此请求:
def fetch_labels(self, orderItemIds):
url = "https://api.flipkart.net/sellers/orders/labels"
headers = {'Accept': 'application/octet-stream'}
payload = {'orderItemId':','.join(orderItemIds)}
return self.session.get(url, params=payload, headers=headers, stream=True)