我正在编写一个Python脚本来与Rally WSAPI进行交互。我使用的是Python 3.6.1,据了解,默认情况下应检查SSL证书。
使用Pyral会收到一个SSL错误,尽管我可以通过关闭verify_ssl_cert来停止该错误。我不使用urllib.request,这表明urllib不会进行检查,即使我的版本中应该默认检查也是如此。
使用此pyral版本,我会收到SSL错误:
from pyral import Rally, rallySettings, RallyRESTAPIError
my_server = "rally1.rallydev.com"
my_username = "************"
my_password = "***********"
rally = Rally(my_server, my_username,my_password)
workspaces = rally.getWorkspaces()
for wksp in workspaces:
print(" Worspace: ObjectID=%12s Name='%s'" % (wksp.oid, wksp.Name))
projects = rally.getProjects(workspace=wksp.Name)
for proj in projects:
print(" Project: ObjectID=%12.12s Name='%s'" % (proj.oid, proj.Name))
错误:pyral.context.RallyRESTAPIError:SSL证书验证失败
将Rally通话更改为
rally = Rally(my_server, my_username, my_password, verify_ssl_cert=False)
将错误切换为警告。
这是没有错误的urllib版本
import urllib.request, json
# create a password manager
password_mgr = urllib.request.HTTPPasswordMgrWithDefaultRealm()
# Add the username and password.
# If we knew the realm, we could use it instead of None.
top_level_url = "https://rally1.rallydev.com"
username = "****************"
password = "********************"
password_mgr.add_password(None, top_level_url, username, password)
handler = urllib.request.HTTPBasicAuthHandler(password_mgr)
# create "opener" (OpenerDirector instance)
opener = urllib.request.build_opener(handler)
a_url = "https://rally1.rallydev.com/slm/webservice/v2.0/HierarchicalRequirement/1234567" #story example
# use the opener to fetch a URL
opener.open(a_url)
# Install the opener.
# Now all calls to urllib.request.urlopen use our opener.
urllib.request.install_opener(opener)
response = urllib.request.urlopen(a_url)
data = json.loads(response.read())
print(data)