Win32com WinHTTP пост файл запроса - PullRequest
0 голосов
/ 23 мая 2018

Я пытаюсь отправить запрос с аутентификацией.

Это работает для запроса get:

import win32com.client
h = win32com.client.Dispatch('WinHTTP.WinHTTPRequest.5.1')
h.SetAutoLogonPolicy(0)
h.Open('GET', url, False)
h.Send()

Но я пытаюсь сделать запрос на публикацию, в частности,данные формы, с файлом

data = {'datasetid': 9,
        'date':"2018-04-16",
        'file':open(r'C:\filename.pdf', 'rb').read()}
h = win32com.client.Dispatch('WinHTTP.WinHTTPRequest.5.1')
h.SetAutoLogonPolicy(0)
h.Open('POST', url, False)
h.SetRequestHeader('Content-Type', 'multipart/form-data')
h.Send(json.dumps(data))

Это не работает, потому что 'байты' не сериализуемы в JSON.Изменение 'rb' на 'r' не работает, потому что кодек 'charmap' не может декодировать байт 0x9d в позиции 143.

Как отправить файл поверх?(И отправьте также пункт Аутентификация, мы используем Аутентификацию NT).

Я попытался использовать запросы по запросу и это работает.Но я хотел бы найти метод, который не требует ввода аутентификации.с использованием request_ntlm мне нужно ввести что-то вроде session.auth = HttpNtlmAuth ('username', 'password').

Я ищу решение, подобное win32com SetAutoLogonPolicy (0), чтобы не было необходимостиввести имя пользователя и пароль.

1 Ответ

0 голосов
/ 23 мая 2018

https://github.com/brandond/requests-negotiate-sspi

работает для автологона и запросов .post как обычно.Но все же интересно, как h.Send () работает с файлами.:)

...