簡體   English   中英

使用 python 模塊請求上傳 Strava GPX 時出現 ValueError - 為什么?

[英]Strava GPX upload with python module requests is giving a ValueError - why?

我不明白為什么會出現這個 ValueError?

  • 發布請求
import requests

headers = {'authorization': 'Bearer XXXXXXXXXXXXXXXX'}
files = [{'file': open('../poc_data/Sport-sessions/GPS-data/2012-08-09_05-32-43-UTC_55d566fa93bc7d9d1757b8e0.gpx', 'rb')}, {'data_type': 'gpx'}, {'Content-Type': 'multipart/form-data'}]

r = requests.post('https://www.strava.com/api/v3/uploads', headers=headers, files=files)
  • 錯誤回溯

    *回溯(最近一次通話):
    <module> 中的文件“D:/projekte/11_github/poc_runtastic/poc_code/strava_upload_activities.py”,第 19 行
    r = requests.post('https://www.strava.com/api/v3/uploads', headers=headers, files=files)
    文件“E:\\Python\\Python38\\lib\\site-packages\\requests\\api.py”,第 117 行,在帖子中
    返回請求('post', url, data=data, json=json, **kwargs)
    文件“E:\\Python\\Python38\\lib\\site-packages\\requests\\api.py”,第 61 行,在請求中
    返回 session.request(method=method, url=url, * kwargs)
    文件“E:\\Python\\Python38\\lib\\site-packages\\requests\\sessions.py”,第 528 行,在請求中
    prep = self.prepare_request(req)
    文件“E:\\Python\\Python38\\lib\\site-packages\\requests\\sessions.py”,第 456 行,在 prepare_request 中
    p.准備(
    文件“E:\\Python\\Python38\\lib\\site-packages\\requests\\models.py”,第 319 行,准備中
    self.prepare_body(數據,文件,json)
    文件“E:\\Python\\Python38\\lib\\site-packages\\requests\\models.py”,第 512 行,在 prepare_body 中
    (body, content_type) = self._encode_files(files, data)
    文件“E:\\Python\\Python38\\lib\\site-packages\\requests\\models.py”,第 141 行,在
    _encode_files
    for (k, v) 在文件中:

    ValueError:沒有足夠的值來解包(預期為 2,得到 1)

這種效果的原因與 API 設計有關:它需要一個名為headers 的顯式字典和一個名為params 的字典。
在我上面給出的示例中,我只發送了一個(標頭),這解釋了 ValueError。

此代碼有效:

import requests


files = {
    'file': open('../poc_data/Sport-sessions/GPS-data/2012-08-09_05-32-43-UTC_55d566fa93bc7d9d1757b8e0.gpx', 'rb')
}
headers = {
    'authorization': 'Bearer XXXXXXXXXXXXXXXX'
}
params = {
    'data_type': 'gpx'
}
url = 'https://www.strava.com/api/v3/uploads'


r = requests.post(files=files, headers=headers, params=params, url=url)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM