2016-09-30 137 views
0

我正在尝试POST到Adobe Sign API。即使你不熟悉API,这应该是一个非常简单的问题。如何使用Python请求发出POST请求

注册的文件说,我需要做的POST看起来是这样的:

POST /api/rest/v5/transientDocuments HTTP/1.1 
Host: api.na1.echosign.com 
Access-Token: MvyABjNotARealTokenHkYyi 
Content-Type: multipart/form-data 
Content-Disposition: form-data; name="File"; filename="MyPDF.pdf" 

<PDF CONTENT> 

这里是我当前的代码,使用Python要求:

def createTransientDocument(your_file_base_url, file_name): 
    headers = {'access-token': datafile.accessToken, 
       'x-user-email': '<redacted for StackOverflow>', 
       'content-type': 'multipart/form-data'} 

    files = {'file': (file_name, open(your_file_base_url + file_name, 'rb'))} 

    r = requests.post(datafile.transient_documents_URL, files = files, headers=headers) 

    return r 

不幸的是,这是不太什么API在寻找。我收到了回复:

*{"code":"BAD_REQUEST","message":"The request provided is invalid"}* 

有关如何使用请求库将此PDF文件发布到此API的任何提示?

对不起n00b的问题,但我正在学习请求库。谢谢。

回答

1

这是一个细微差别,但您需要用大写字母F来命名文件“File”。否则,API不会在Adobe Sign端进行提取。这是正确的(和工作)的API调用。

def createTransientDocument(your_file_base_url, file_name): 
    headers = {'access-token': datafile.accessToken, 
       'x-user-email': '<email redacted>', 
       'content-disposition':'form-data'} 

    files = {'File': open(your_file_base_url+file_name, 'rb')} 


    r = requests.post(datafile.transient_documents_URL, files=files, headers=headers) 

    return r