2014-09-23 3 views
1

Я пытаюсь опубликовать файл в 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') 
+0

Можете ли вы описать, что вы подразумеваете под «Он загрузит файл PDF, но с мусором»? Если вы сделаете одни и те же запросы против https://httpbin.org/post, вы увидите, что запросы вызывают одинаковые запросы. –

+0

Он отобразит файл PDF со всеми странными символами – vjanicek

ответ

1

Этот как это работает

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') 
Смежные вопросы