监视GET请求Python的状态

时间:2013-06-13 23:12:00

标签: python api url

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

1 个答案:

答案 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)