簡體   English   中英

python-requests和EchoSign

[英]python-requests and EchoSign

我正在嘗試將文件發布到EchoSign API中,除了python-requests之外,它對我都有效。

我這里有完美運行的CURL命令

curl -H "Access-Token: API_KEY" \
 -F File=@/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')

我究竟做錯了什么?? 我嘗試過將文件也作為數據而不是文件發布,仍然沒有不同的結果

謝謝

編輯

當我添加時它起作用了

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')

這是這樣的

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')

嘗試傳入文件名和mime-type,如下所示:

files = {
    'File': (
        os.path.basename(file_path),
        f,
        'application/pdf',
    )
}

參考文獻:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM