我正在尝试从托管在Windows IIS服务器上的REST Web服务中检索数据;服务器使用HTTPS并要求身份验证。
以下Curl命令可以正常工作:
curl -k --ntlm --user bob https://mywebservice
然而,当我将其转换为等效的pycurl时,我可以在程序中使用它,我正在努力让它进行身份验证。
到目前为止,我有:
import pycurl
name='bob'
pwd='pwd1'
url="https://mywebservice"
curl = pycurl.Curl()
curl.setopt(pycurl.URL, url)
curl.setopt(pycurl.SSL_VERIFYPEER, 0)
#not sure about this
#curl.setopt(pycurl.PROXYAUTH, pycurl.HTTPAUTH_NTLM)
#curl.setopt(pycurl.PROXYUSERPWD,"{}:{}".format(name, pwd))
curl.setopt(pycurl.HTTPAUTH, pycurl.HTTPAUTH_NTLM)
curl.setopt(pycurl.USERNAME, name)
curl.setopt(pycurl.USERPWD, pwd)
curl.perform()
curl.close()
无论如何,通过以下代码和变体,我不断获得:
401 - Unauthorized: Access is denied due to invalid credentials
从IIS返回。
答案 0 :(得分:3)
问题在于我使用pycurl.USERNAME
,pycurl.USERPWD
。
我必须通过源路由,但我找到了:pycurl.USERPWD,它让它工作了:
import pycurl
name='bob'
pwd='pwd1'
url="https://mywebservice"
curl = pycurl.Curl()
curl.setopt(pycurl.URL, url)
curl.setopt(pycurl.SSL_VERIFYPEER, 0)
curl.setopt(pycurl.HTTPAUTH, pycurl.HTTPAUTH_NTLM)
curl.setopt(pycurl.USERPWD, "{}:{}".format(name, pwd))
curl.perform()
curl.close()