python3 zeep url提供401客户端错误:url未经授权
我的命令:python3 zeep url提供401客户端错误:url未经授权,python,python-3.x,soap,http-status-code-401,zeep,Python,Python 3.x,Soap,Http Status Code 401,Zeep,我的命令:python3-mzeephttps://pearson:m0bApP5@cms.powerschool.com/pearson rest/services/PublicPortalServiceJSON?wsdl 我得到一个错误: requests.exceptions.HTTPError:401客户端错误:url未经授权:https://pearson:m0bApP5@cms.powerschool.com/pearson rest/services/PublicPortalSer
python3-mzeephttps://pearson:m0bApP5@cms.powerschool.com/pearson rest/services/PublicPortalServiceJSON?wsdl
我得到一个错误:
requests.exceptions.HTTPError:401客户端错误:url未经授权:https://pearson:m0bApP5@cms.powerschool.com/pearson rest/services/PublicPortalServiceJSON?wsdl
转到https://cms.powerschool.com/pearson-rest/services/PublicPortalServiceJSON?wsdl
和使用pearson和m0bApP5进行手动身份验证都是可行的,但为什么不可行呢
我也尝试过使用这段代码,但也不起作用
#!/usr/bin/env python3
from zeep import Client
from requests.auth import HTTPBasicAuth # or HTTPDigestAuth, or OAuth1, etc.
from requests import Session
from zeep.transports import Transport
session = Session()
session.auth = HTTPBasicAuth("pearson","m0bApP5")
url = "https://cms.powerschool.com/pearson-rest/services/PublicPortalServiceJSON?wsdl"
stransport = Transport(session=session)
client = Client(url,transport=stransport)
client.wsdl.dump()
您应该像这样使用HTTPDigestAuth:
session = requests.session()
session.auth = requests.auth.HTTPDigestAuth(api_username, api_password)
self.url = base_url + "pearson-rest/services/PublicPortalServiceJSON"
try:
self.client = zeep.Client(
wsdl=self.url + "?wsdl",
transport=zeep.transports.Transport(session=session),
)
except requests.exceptions.ConnectionError:
raise APIException(f"Could not connect to {base_url}.")
except requests.exceptions.HTTPError:
raise APIException(
f"Incorrect api credentials ({api_username}, {api_password})."
)
您不应在公共网站上发布身份验证凭据。