1

我有一个可以访问的网址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 循环。

4

1 回答 1

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)
于 2013-06-13T23:36:05.663 回答