我正在玩,尝试编写一些代码来使用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()
Run Code Online (Sandbox Code Playgroud)
response.code是200(我认为它应该是202).url有效,但基本的HTTP身份验证似乎没有用,因为缩短的URL不在我的URL列表中(在http://tr.im/?page=1).
在阅读http://www.voidspace.org.uk/python/articles/authentication.shtml#doing-it-properly后, 我也尝试过:
TRIM_API_URL = 'api.tr.im/api'
password_mgr = urllib2.HTTPPasswordMgrWithDefaultRealm()
password_mgr.add_password(None, TRIM_API_URL, USERNAME, PASSWORD)
auth_handler = urllib2.HTTPBasicAuthHandler(password_mgr)
opener = urllib2.build_opener(auth_handler)
urllib2.install_opener(opener)
response = urllib2.urlopen('http://%s/trim_simple?url=%s'
% (TRIM_API_URL, url_to_trim))
url = response.read().strip()
Run Code Online (Sandbox Code Playgroud)
但我得到了相同的结果.(response.code为200且url有效,但未在我的帐户http://tr.im/中记录.)
如果我使用查询字符串参数而不是基本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()
Run Code Online (Sandbox Code Playgroud)
...然后不仅url有效,而且它记录在我的tr.im帐户中.(虽然response.code仍然是200.) …
我试图使用python进行基本身份验证的HTTPS GET.我是python的新手,导游似乎使用不同的图书馆来做事.(http.client,httplib和urllib).谁能告诉我它是如何完成的?你怎么能告诉标准库使用?