我正在尝试通过Python3的Requests模块与API交互,但是身份验证无效。我可以使用完全相同的网址和相同的用户名/密码,并通过Firefox浏览器使用API。
该设置存在一些并发症,所以让我解释一下。
我要与之交谈的设备使用https,但是我无权访问证书,因此我选择不进行验证。我可以使用仅使用http的旧模型与Requests进行交互。
该设备位于本地网络上,但是我公司的网络使用的代理会干扰与本地网络上设备的通信,因此我将其关闭。
这是我的代码示例:
session = requests.Session()
auth = ('username', 'password')
session.auth = auth
s.trust_env = False # remove proxies (see 2 above)
response = session.get(
url='https://mylocalurl/api/',
params={'apikey' : 'myapikey',
'req' : 'generalInfo'},
verify=False # don't verify SSL cert (see 1 above)
)
我首先想到的是,我必须指定发送的凭据的编码,因为我可以在浏览器中使用它们。我尝试做auth = (b'username', b'password')
时不走运。我查看了response.content
,并在第一行中找到了b'<?xml version="1.0" encoding="iso-8859-1"?>\n
,所以我尝试通过auth = ('username'.encode('iso-8859-1'), 'password'.encode('iso-8859-1'))
进行指定,但还是没有运气。
我的问题是: