亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Python urllib2,基本HTTP身份驗證和tr.im.

Python urllib2,基本HTTP身份驗證和tr.im.

慕妹3146593 2019-09-20 17:09:26
我正在玩,嘗試編寫一些代碼來使用tr.im API來縮短URL。在閱讀http://docs.python.org/library/urllib2.html后,我嘗試了:   TRIM_API_URL = 'http://api.tr.im/api'   auth_handler = urllib2.HTTPBasicAuthHandler()   auth_handler.add_password(realm='tr.im',                             uri=TRIM_API_URL,                             user=USERNAME,                             passwd=PASSWORD)   opener = urllib2.build_opener(auth_handler)   urllib2.install_opener(opener)   response = urllib2.urlopen('%s/trim_simple?url=%s'                              % (TRIM_API_URL, url_to_trim))   url = response.read().strip()response.code是200(我認為它應該是202)。url有效,但基本的HTTP身份驗證似乎沒有用,因為縮短的URL不在我的URL列表中(在http://tr.im/?page=1)。如果我使用查詢字符串參數而不是基本HTTP身份驗證,如下所示:   TRIM_API_URL = 'http://api.tr.im/api'   response = urllib2.urlopen('%s/trim_simple?url=%s&username=%s&password=%s'                              % (TRIM_API_URL,                                 url_to_trim,                                 USERNAME,                                 PASSWORD))   url = response.read().strip()...然后不僅url有效,而且它記錄在我的tr.im帳戶中。(雖然response.code仍然是200.)雖然我的代碼一定有問題(而不是tr.im的API),因為$ curl -u yacitus:xxxx http://api.tr.im/api/trim_url.json?url=http://www.google.co.uk如果我跑:$ curl -u yacitus:xxxx http://api.tr.im/api/trim_url.json?url=http://www.google.co.uk...再次,我得到:{"trimpath":"hfhb","reference":"nH45bftZDWOX0QpVojeDbOvPDnaRaJ","trimmed":"11\/03\/2009","destination":"http:\/\/www.google.co.uk\/","trim_path":"hfhb","domain":"google.co.uk","url":"http:\/\/tr.im\/hfhb","visits":0,"status":{"result":"OK","code":"201","message":"tr.im URL Already Created [yacitus]."},"date_time":"2009-03-11T10:15:35-04:00"}注意代碼是201,消息是“tr.im URL已經創建[yacitus]”。我不能正確地進行基本的HTTP身份驗證(在任一種嘗試中)。你能發現我的問題嗎?也許我應該看一下,通過電線發送什么?我以前從未這樣做過。我可以使用Python API(可能在pdb中)嗎?或者我可以使用另一種工具(最好是Mac OS X)嗎?
查看完整描述

3 回答

?
鴻蒙傳說

TA貢獻1865條經驗 獲得超7個贊


為了使urllib2基本身份驗證起作用,http響應必須包含HTTP代碼401 Unauthorized 和一個"WWW-Authenticate"帶有值的密鑰,"Basic"否則Python將不會發送您的登錄信息,您將需要使用請求,或者urllib.urlopen(url)使用您的登錄信息。 url,或添加@Flowpoke的 答案中的標題。


您可以通過以下方式查看錯誤urlopen:


try:

    urllib2.urlopen(urllib2.Request(url))

except urllib2.HTTPError, e:

    print e.headers

    print e.headers.has_key('WWW-Authenticate')


查看完整回答
反對 回復 2019-09-20
  • 3 回答
  • 0 關注
  • 660 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號