Активность загрузки Strava Api выдает ошибку {"message": "Неверный запрос", "errors": [{"resource": "Upload", "field": "Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Активность загрузки Strava Api выдает ошибку {"message": "Неверный запрос", "errors": [{"resource": "Upload", "field": "

Сообщение Anonymous »

Я работаю над личным проектом, который получает данные от пользователя, где он выбирает, где он начал поход и где закончил, и он автоматически загружает данные GPS этого похода в его учетную запись Strava. Эта часть проекта уже завершена и протестирована, я вручную загрузил файлы в Strava, и они заработали. Моя текущая проблема заключается в том, что когда я пытаюсь загрузить действие в Strava, используя их API загрузки, я получаю эту ошибку: "{"message":"Bad Request","errors":[{"resource":"Upload","field": "data","code":"пусто"}]}". У меня другие функции API Strava работают без проблем, но эта функция API зацикливает меня из-за передачи файла .gpx. Я пробовал онлайн-ресурсы, но не добился никакого прогресса. Если у кого-то есть опыт или он может направить меня в правильном направлении, я буду очень признателен. Вот мой код:

Код: Выделить всё

import json
import os
import boto3
import urllib3
from io import BytesIO

def lambda_handler(event, context):
http = urllib3.PoolManager()

client_id = 'XXXX'
client_secret = 'XXXXXXXXXXXX'
code = 'XXXXXXXXXXXXXXXXXX'
grant_type = 'authorization_code'

urlToken = 'https://www.strava.com/api/v3/oauth/token'
headers = {
'Content-Type': 'application/json'
}
body = {
'client_id': client_id,
'client_secret': client_secret,
'code': code,
'grant_type': grant_type
}

response = http.request('POST', urlToken, headers=headers, body=json.dumps(body).encode('utf-8'))
response_data = json.loads(response.data.decode('utf-8'))
strava_access_token = response_data['access_token']
print("access token is: "+strava_access_token)

# create an S3 client
s3 = boto3.client('s3')

# define the bucket and file name
bucket_name = 'XXXXXXXXX'
file_name = 'newFile1.gpx'

# download the file from S3 to a temporary file in the /tmp directory
with open('/tmp/' + file_name, 'wb') as f:
s3.download_fileobj(bucket_name, file_name, f)

# read the contents of the file
with open('/tmp/' + file_name, 'rb') as f:
gpx_data = f.read()

print(gpx_data)

# convert the bytes to a string
gpx_data_str = gpx_data.decode()

# Create the request headers
headers = {
'Authorization': f'Bearer {strava_access_token}',
'Accept': 'application/json, text/plain, */*',
'Content-Type': 'multipart/form-data',
'Content-Disposition': 'attachment; filename="testRoute.gpx"'
}

# create the data payload
data = {
"data_type": "gpx",
'file': (file_name, gpx_data, 'application/gpx+xml')
}

# Send the request
response = http.request(
method='POST',
url='https://www.strava.com/api/v3/uploads',
headers=headers,
fields=data
)

# Print the response
print(response.data.decode())

message = "testing message"
return message

Я пробовал использовать другой файл, пробовал открыть файл по-другому, пробовал менять параметры, пробовал менять Content-Type и еще несколько вещей. Я думаю, что, возможно, я упускаю что-то очевидное, но на данный момент я думаю, что свежий взгляд поможет.

Подробнее здесь: https://stackoverflow.com/questions/758 ... est-errors
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Не удалось загрузить в pypi: 400 неверный запрос с https://upload.pypi.org/legacy/.
    Anonymous » » в форуме Python
    0 Ответы
    29 Просмотры
    Последнее сообщение Anonymous
  • Не удалось загрузить в pypi: 400 неверный запрос с https://upload.pypi.org/legacy/.
    Anonymous » » в форуме Python
    0 Ответы
    35 Просмотры
    Последнее сообщение Anonymous
  • Наследует help_text из django.db.models.Field в rest_framework.serializer.Field
    Anonymous » » в форуме Python
    0 Ответы
    69 Просмотры
    Последнее сообщение Anonymous
  • Наследует help_text из django.db.models.Field в rest_framework.serializer.Field
    Anonymous » » в форуме Python
    0 Ответы
    74 Просмотры
    Последнее сообщение Anonymous
  • Наследует help_text из django.db.models.Field в rest_framework.serializer.Field
    Anonymous » » в форуме Python
    0 Ответы
    64 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»