изменить тело Python подготовленные запросы - PullRequest
0 голосов
/ 20 июня 2019

У меня та же проблема, что и этой персоны , но мой 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...