私はTeamcityからいくつかのビルド情報を試してみるために、pythonでurllib.requestを使用しています。このリクエストはユーザー名とパスワードなしで動作することが前提でしたが、最近のセキュリティ変更により、ユーザー名とパスワードを使用する必要があります。HTTPエラー401:urllib.request.urlopenを使用して無許可
試み1)
url = 'http://<domain>/httpAuth/app/rest/buildTypes/<buildlabel>/builds/running:false?count=1&start=0'
# create a password manager
password_mgr = urllib.request.HTTPPasswordMgrWithDefaultRealm()
# Add the username and password.
top_level_url = "http://<domain>/httpAuth/app/rest/buildTypes/id:<buildlabel>/builds/running:false?count=1&start=0"
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)
# use the opener to fetch a URL
opener.open(url)
試み2
url = 'http://<username>:<password>@<domain>/httpAuth/app/rest/buildTypes/id:buildlabel/builds/running:false?count=1&start=0'
rest_api = urllib.request.urlopen(url)
これらの戻り "HTTPエラー401:許可されていない" の両方:だから私は、下の2つの溶液のそれぞれを試してみました変更されました。しかし、私が 'url'を印刷してこの出力をブラウザにコピーすると、リンクは完全に機能します。しかし、私は上記のエラーを取得するPythonを使用しています。
別のPerlスクリプトで非常によく似た何かを使用していますが、これも完全に動作します。
* BELOW解決しよう*
サーバーは、他の要素を確認すること - HTTPヘッダ、クッキーのように、 DevToolsをChrome/Firefoxで使用して、どのブラウザがサーバーに送信するかを確認できます。 HTTPヘッダー。 – furas