python 请求错误 415

python requests Error 415

我正在尝试通过来自 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

文档的 link 是:Documentation 我在互联网上搜索,它说错误是针对不支持的媒体类型。 那我做错了什么?

不要设置 Content-Type header,您发送的是 GET 请求,该请求没有 body,因此没有设置类型的内容 .

而是设置 Accept header,如文档中所述。不要为整个 session 设置 header,仅针对此请求:

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)