Я пишу скрипт на Python для взаимодействия с Rally WSAPI.Я использую Python 3.6.1, который, как я понимаю, должен проверять SSL-сертификаты по умолчанию.
При использовании Pyral я получаю ошибку SSL, хотя я могу остановить ее, отключив verify_ssl_cert.Я не использую urllib.request, что говорит о том, что urllib не проверяет, хотя в моей версии проверка должна быть по умолчанию.
При использовании этой пиратской версии я получаю ошибку 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)