更改python准备好的请求的内容

时间:2019-06-20 06:25:10

标签: python authentication sharepoint python-requests

我遇到的问题与this persion相同,但是我的POST请求包括NTLM身份验证。

简而言之,我正在尝试使用其Web API将文件上传到Sharepoint。以下代码“有效”,但由于python将-2a95cc93056b45e0b7c3447234788e29 Content-Disposition: form-data; name="file"; filename="hello.docx"垃圾标头包含在上载的文件中,因此上载的docx文件已损坏。无论mime类型如何,都会发生这种情况。

POSTheaders = {'Accept':'application/json; odata=verbose',
           'Content-Type':'application/json; odata=verbose',
           'X-RequestDigest':FormDigestValue, 
           'binaryStringRequestBody':'true', 
           'WWW-Authenticate': 'NTLM'
           }
posturl = my_server + "/_api/web/getfolderbyserverrelativeurl('my_folder')/files/add(url='hello.docx', overwrite='true')"
txtfile = {'file': ('hello.docx', open('docs/hello.docx', 'rb'), 'application/octet-stream')}
p = requests.post(posturl, headers=POSTheaders,files=txtfile, auth=HttpNtlmAuth(USERNAME,PASSWORD))

准备好的请求也“成功”上传了文件,但是,当我取消注释prepped.body行以尝试从上传的文件中删除http标头时,出现了“ www-authenticate”的KeyError

s = Session()
s.header = POSTheaders
s.auth = HttpNtlmAuth(USERNAME,PASSWORD)
_request = Request('POST', posturl, files=txtfile, headers=POSTheaders,auth=HttpNtlmAuth(USERNAME,PASSWORD))
prepped = _request.prepare()
#prepped.body = "I want this".encode()
resp = s.send(prepped)

0 个答案:

没有答案