Python:appengine urllib2 从 302 获取头部

1 投票
2 回答
637 浏览
提问于 2025-04-15 15:48

正常情况下,urllib2可以正常工作:

>>> import urllib2
>>> r = urllib2.urlopen(u"http://bit.ly/4ovTZw")
>>> r.geturl()
'http://www.writing.com/main/handler/action/show_document/item_id/933413.mp3'
>>> r.headers.get("Content-Type")
'audio/mpeg'

但是在appengine上,使用相同的代码却显示text/html

def get(self):
    r = urllib2.urlopen(u"http://bit.ly/4ovTZw")
    self.response.out.write( r.geturl() )
    self.response.out.write( r.headers.get("Content-Type") )
    return

我能绕过这个问题吗?为什么会发生这种情况?

2 个回答

0

我知道,AppEngine会把一些地址列入黑名单——你可以查看一下你的响应内容,可能会有提示。

也有可能是反过来的情况——有些服务把AppEngine列入黑名单……我不太确定。我记得在GAE刚推出的时候,无法通过AppEngine访问Delicious这个网站。

0

我刚刚尝试通过互动命令行来访问那个特定的网址;使用urlfetch这个功能对我来说是有效的。

Google App Engine/1.4.2
Python 2.5.2 (r252:60911, May 12 2010, 14:18:27) 
[GCC 4.3.1]

>>> from google.appengine.api import urlfetch
>>> result = urlfetch.fetch('http://bit.ly/4ovTZw') 
>>> print result.headers['content-type']
audio/mpeg

撰写回答