我想寫一個python腳本來發送一個HTTP請求,所以我從urllib2庫(https://docs.python.org/2/howto/urllib2.html#id6)上的Python文檔讀取,並拿着身份驗證示例代碼,但我仍然得到錯誤...使用python發送一個HTTP請求 - 錯誤
這裏是我的代碼(* top_level_url =登錄URL,a_url = API請求,其在網絡上的作品,並顯示響應):
import urllib2
password_mgr = urllib2.HTTPPasswordMgrWithDefaultRealm()
# Add the username and password.
# If we knew the realm, we could use it instead of None.
user='MY_USER_NAME'
passwd='MY_PASSWORD'
top_level_url = "https://next.adjust.com/#/login"
password_mgr.add_password(None, top_level_url, user, passwd)
handler = urllib2.HTTPBasicAuthHandler(password_mgr)
# create "opener" (OpenerDirector instance)
opener = urllib2.build_opener(handler)
# use the opener to fetch a URL
a_url = 'https://api.adjust.com/kpis/v1/vzpmna78ud8m/cohorts?start_date=2016-12-05&end_date=2016-12-06&kpis=sessions&grouping=os_names,countries'
opener.open(a_url)
# Install the opener.
# Now all calls to urllib2.urlopen use our opener.
urllib2.install_opener(opener)
但是當我運行的代碼,我收到一個錯誤:
Traceback (most recent call last):
File "httptest3.py", line 19, in <module>
opener.open(a_url)
File "/usr/lib64/python2.7/urllib2.py", line 437, in open
response = meth(req, response)
File "/usr/lib64/python2.7/urllib2.py", line 550, in http_response
'http', request, response, code, msg, hdrs)
File "/usr/lib64/python2.7/urllib2.py", line 475, in error
return self._call_chain(*args)
File "/usr/lib64/python2.7/urllib2.py", line 409, in _call_chain
result = func(*args)
File "/usr/lib64/python2.7/urllib2.py", line 558, in http_error_default
raise HTTPError(req.get_full_url(), code, msg, hdrs, fp)
urllib2.HTTPError: HTTP Error 401: Unauthorized
我已經嘗試了多種解決方案來解決這個錯誤,但我一直在獲得相同的... 沒有人知道我的代碼中有什麼問題嗎? 還是你有另一個代碼示例可以工作? (正如我所說的,我試過谷歌前10名的結果...)
感謝先進!
401錯誤說你是'未經授權的'這意味着(一般來說)你的驗證不起作用。檢查您的憑證,特別是檢查您的https://api.adjust.com/使用的身份驗證方法,這與Internet上的所有API都不相同。 – Saksow
您在urllib2中使用的HTTP基本身份驗證不適用於跨域,並且您已將top_level_url設置爲https://next.adjust.com/#/login,然後您在另一個域上調用url。請參閱:http://stackoverflow.com/q/339244/121199 – filippo
@Saksow 我在腳本中寫的用戶名和密碼 - 是我用來連接網站的確切細節... – Bramat