Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python win32com winhttp post请求文件_Python_Multipartform Data_Pywin32_Win32com_Winhttprequest - Fatal编程技术网

Python win32com winhttp post请求文件

Python win32com winhttp post请求文件,python,multipartform-data,pywin32,win32com,winhttprequest,Python,Multipartform Data,Pywin32,Win32com,Winhttprequest,我正在尝试发布具有身份验证的请求 这适用于get请求: import win32com.client h = win32com.client.Dispatch('WinHTTP.WinHTTPRequest.5.1') h.SetAutoLogonPolicy(0) h.Open('GET', url, False) h.Send() 但我正试图提出一个post请求,特别是表单数据,以及文件 data = {'datasetid': 9, 'date':"2018-04-16"

我正在尝试发布具有身份验证的请求

这适用于get请求:

import win32com.client
h = win32com.client.Dispatch('WinHTTP.WinHTTPRequest.5.1')
h.SetAutoLogonPolicy(0)
h.Open('GET', url, False)
h.Send()
但我正试图提出一个post请求,特别是表单数据,以及文件

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”编解码器无法解码143位的字节0x9d

如何发送文件?(同时发送身份验证,我们使用的是NT身份验证)

我尝试过使用requests\u ntlm,效果很好。但是我想找到一种不需要在身份验证中输入密钥的方法。使用requests\u ntlm,我需要输入session.auth=HttpNtlmAuth('username','password')之类的内容

我正在寻找像win32com SetAutoLogonPolicy(0)这样的解决方案,这样就不需要输入用户名和密码。

适用于自动登录和requests.post。但是,仍然想知道h.Send()如何处理文件。:)