Я очень плохо знаком с python (и программирую в целом), поэтому надеюсь, что я достаточно четко сформулирую свои проблемы.Мне удалось собрать воедино приложение, которое подключается к API одного из программ моей компании.
Я смог авторизоваться, получить токен, передать его другим функциям в GET и POST для некоторыхAPI функции.Я работаю над новым вызовом API, который публикует файл.Я в замешательстве.Все примеры, которые я нахожу, показывают только передачу файла, но мне нужно передать файл, данные и заголовок аутентификации.Я пробовал так много вариантов моего кода, и ничто не приблизило меня.
Во-первых, эта функция работает, но с другим API (группами) для публикации новой группы.Он не включает в себя никаких файлов.
def apiPost(token):
if not token == "":
status.run_set_text('Running API POST Call', 3)
headers = { 'Content-Type':'application/json', 'Authorization':'Bearer '+str(token) }
data = {"data":{ 'id':0, 'customerId':33, 'name':'567tuhj', 'description':'sdfgsdfg'}}
r = requests.post(api_url+"v1.1/groups/", headers=headers, data=json.dumps(data))
***other code removed updating status bars***
return r
else:
***other code removed updating status bars***
Моя среда разработки имеет доступ только к одному клиенту, но все же требует, чтобы я опубликовал customerId в POST.
Я пробовал сотни вариантов преобразования этого в публикацию файла из того, что я прочитал в учебниках по сайтам запросов и некоторых других вопросов, связанных со стековым потоком.Это сообщения в API packageFiles.На странице Swagger, к которой у меня есть доступ, написано, что при загрузке файла необходимо указать идентификатор и идентификатор клиента.
def apiPost(token):
if not token == "":
status.run_set_text('Running API POST Call', 3)
headers = {'Authorization':'Bearer '+str(token)}
files = {'file': open('log.txt', 'rb')}
data = {"data":{ 'id':0, 'customerId':33}}
r = requests.post(api_url+"v1.1/package_files/"+set_api_pair_value, headers=headers, data=json.dumps(data), file=files)
***other code removed updating status bars***
return r
else:
***other code removed updating status bars***