Я пытаюсь отправить запрос с аутентификацией.
Это работает для запроса на получение:
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, и это работает. Но я хотел бы найти метод, который не требует ввода аутентификации. используя request_ntlm, мне нужно ввести что-то вроде session.auth = HttpNtlmAuth('имя пользователя','пароль').
Я ищу решение, такое как win32com SetAutoLogonPolicy(0), чтобы не было необходимости вводить имя пользователя и пароль.