2014-09-23 60 views
1

我想將一個文件發佈到EchoSign API中,除了python-requests外,它對我來說無處不在。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') 

我在做什麼錯?我曾嘗試張貼的文件數據,而不是文件太大,仍然沒有不同的結果

感謝

編輯

當我加入

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發出同樣的請求,你會看到請求產生相同的請求。 – 2014-09-23 02:37:26

+0

它將顯示一個包含所有奇怪字符的PDF文件 – vjanicek 2014-09-23 02:38:06

回答

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') 
相關問題