Я пытаюсь опубликовать файл в API EchoSign, и он работает везде для меня, кроме python-запросов.python-requests и EchoSign
У меня есть здесь CURL команда, которая работает отлично
curl -H "Access-Token: API_KEY" \
-F [email protected]/home/user/Desktop/test123.pdf \
https://secure.echosign.com/api/rest/v2/transientDocuments
и это моя функция запросов. Он загрузит файл PDF, но с мусором, тогда как CURL отлично работает.
api_url = 'https://secure.echosign.com/api/rest/v2'
def send_document(file_path, access_token=access_token):
"""Uploads document to EchoSign and returns its ID
:param access_token: EchoSign Access Token
:param file_path: Absolute or relative path to File
:return string: Document ID
"""
headers = {'Access-Token': access_token}
url = api_url + '/transientDocuments'
with open(file_path, 'rb') as f:
files = {
'File': f,
}
return requests.post(url, headers=headers, files=files).json().get('transientDocumentId')
Что я делаю неправильно? Я никогда не пробовал размещение файла в качестве данных, а файлы тоже, и до сих пор не отличается результатом
Благодаря
EDIT
Он работал, когда я добавил
data = {
'Mime-Type': 'application/pdf',
'File-Name': 'abc.pdf'
}
Итак, моя новая функция будет:
def send_document(file_path, access_token=access_token):
"""Uploads document to EchoSign and returns its ID
:param access_token: EchoSign Access Token
:param file_path: Absolute or relative path to File
:return string: Document ID
"""
headers = {
'Access-Token': access_token,
}
data = {
'Mime-Type': 'application/pdf',
'File-Name': 'abc.pdf'
}
url = api_url + '/transientDocuments'
files = {'File': open(file_path, 'rb')}
return requests.post(url, headers=headers, data=data,
files=files).json().get('transientDocumentId')
Можете ли вы описать, что вы подразумеваете под «Он загрузит файл PDF, но с мусором»? Если вы сделаете одни и те же запросы против https://httpbin.org/post, вы увидите, что запросы вызывают одинаковые запросы. –
Он отобразит файл PDF со всеми странными символами – vjanicek