У меня та же проблема, что и этой персоны , но мой POST-запрос включает проверку подлинности NTLM.
В двух словах, я пытаюсь загрузить файлы на sharepoint, используя их веб-API. Следующий код ниже «работает», но загружаемый файл docx поврежден, так как python включает в загруженный файл заголовок нежелательной почты -2a95cc93056b45e0b7c3447234788e29 Content-Disposition: form-data; name="file"; filename="hello.docx"
. Это происходит независимо от типа пантомимы.
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 из загруженного файла, я получаю KeyError для "www-authenticate"
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)