使用 python 模块请求上传 Strava GPX 时出现 ValueError - 为什么?
Strava GPX upload with python module requests is giving a ValueError - why?
我不明白为什么会出现这个 ValueError?
- Post请求
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)
错误回溯
*Traceback(最后一次调用):
文件“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, 文件=文件)
文件“E:\Python\Python38\lib\site-packages\requests\api.py”,第 117 行,在 post
中
return请求('post',url,数据=数据,json=json,**kwargs)
请求
中的文件“E:\Python\Python38\lib\site-packages\requests\api.py”,第 61 行
return session.request(方法=方法, url=url, *kwargs)
请求
中的文件“E:\Python\Python38\lib\site-packages\requests\sessions.py”,第 528 行
准备 = self.prepare_request(要求)
文件“E:\Python\Python38\lib\site-packages\requests\sessions.py”,第 456 行,在 prepare_request
中
p.prepare(
文件“E:\Python\Python38\lib\site-packages\requests\models.py”,第 319 行,在 prepare
中
self.prepare_body(数据,文件,json)
文件“E:\Python\Python38\lib\site-packages\requests\models.py”,第 512 行,在 prepare_body
中
(body, content_type) = self._encode_files(文件, 数据)
文件“E:\Python\Python38\lib\site-packages\requests\models.py”,第 141 行,在
_encode_files
对于文件中的 (k, v):
ValueError:没有足够的值来解压(预期 2,得到 1)
关于 API-design 产生这种效果的原因:它需要一个名为 headers 的显式字典和一个名为 params .
在上面给出的示例中,我只发送了一个 (headers),这解释了 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)
我不明白为什么会出现这个 ValueError?
- Post请求
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)
错误回溯
*Traceback(最后一次调用):
文件“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, 文件=文件)
文件“E:\Python\Python38\lib\site-packages\requests\api.py”,第 117 行,在 post
中 return请求('post',url,数据=数据,json=json,**kwargs)
请求
中的文件“E:\Python\Python38\lib\site-packages\requests\api.py”,第 61 行 return session.request(方法=方法, url=url, *kwargs)
请求
中的文件“E:\Python\Python38\lib\site-packages\requests\sessions.py”,第 528 行 准备 = self.prepare_request(要求)
文件“E:\Python\Python38\lib\site-packages\requests\sessions.py”,第 456 行,在 prepare_request
中 p.prepare(
文件“E:\Python\Python38\lib\site-packages\requests\models.py”,第 319 行,在 prepare
中 self.prepare_body(数据,文件,json)
文件“E:\Python\Python38\lib\site-packages\requests\models.py”,第 512 行,在 prepare_body
中 (body, content_type) = self._encode_files(文件, 数据)
文件“E:\Python\Python38\lib\site-packages\requests\models.py”,第 141 行,在
_encode_files
对于文件中的 (k, v):ValueError:没有足够的值来解压(预期 2,得到 1)
关于 API-design 产生这种效果的原因:它需要一个名为 headers 的显式字典和一个名为 params .
在上面给出的示例中,我只发送了一个 (headers),这解释了 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)