我有一个访问的网址http://abc.def.com/something,它以JSON库的形式返回状态消息。从这个JSON库,我需要检索字段'fileDownloadURL'的值,但在第一次尝试时,这始终是空字符串。因此,我需要访问一个不同的URL http://abc.def.com/something_else,它返回一个新的JSON库,其字段与第一个相同,但过了一段时间,'fileDownloadURL'的值不再为空。
这适用于我的任何浏览器,但是当我尝试在Python中执行时,第二个URL返回的“fileDownloadURL”值保持为空。我想这是因为我的浏览器会向URL发送一些关于我的信息,但我不是用Python发送这些信息。
如何让服务器意识到访问这两个URL的人是同一个人?
示例代码是
import urllib2, base64, json, time
base64string = base64.encodestring('%s:%s' % (username, password)).replace('\n', '')
request = urllib2.Request("http://abc.def.com/something")
request.add_header("Authorization", "Basic %s" % base64string)
url_response_json = urllib2.urlopen(request)
url_response_dict = json.load(url_response_json)
fileDownloadURL = url_response_dict["fileDownloadURL"]
status_url = urllib2.Request("http://abc.def.com/something_else")
status_url.add_header("Authorization", "Basic %s" % base64string)
while fileDownloadURL == '':
url_status_json = urllib2.urlopen(status_url)
url_status_dict = json.load(url_status_json)
fileDownloadURL = url_status_dict["fileDownloadURL"]
time.sleep(3)
此代码永远不会中断while循环。
答案 0 :(得分:1)
代码永远不会超出while循环,因为您永远不会重置fileDownloadURL
的值。在你的while循环中尝试这个:
while fileDownloadURL == '':
url_status_json = urllib2.urlopen(status_url)
url_status_dict = json.load(url_status_json)
fileDownloadURL = url_status_dict["fileDownloadURL"]
time.sleep(3)