如何使用Python请求发出此POST请求

时间:2016-09-30 23:00:59

标签: python post python-requests

我正在尝试POST到Adobe Sign API。即使您不熟悉API,这应该是一个非常简单的问题。

Sign的文档说我需要做的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"}*

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

很抱歉n00b问题,但我现在正在学习Requests库。谢谢。

1 个答案:

答案 0 :(得分:1)

这是一个细微差别,但你需要命名文件&#34; File&#34;使用大写字母F.否则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