为什么瓶子没有显示我返回的页面?

时间:2017-11-22 12:33:51

标签: python python-requests bottle

我是新手。我已经找到了答案,但没有得到任何答案。

无论如何加载没有redirect的网页?

代码是这样的:

from bottle import get, run, template

@get('/list/item')
def listItems():
    r = requests.get('my/url/which/works/')
    return r.content

if __name__ == '__main__':
    run(host='localhost', port=8080 )

并且网页为空。我还尝试了return r.textreturn template(r.content)return str(r.content)return str(r.content.decode('utf-8'))

nf = urllib.urlopen('my/url/whick/works')
return nf.read()

他们都没有返回我想要的页面。

但是,如果我写这个return r.content[0],它就可以了。页面将显示第一个字母,即'<'。但是如果我写return r.content[0:100],它会再次返回一个空页面。

如果我在命令行中运行请求,则返回:

>>> import requests
>>> r = requests.get('my/url/which/works/')
>>>
>>> r.content
'<?xml version="1.0" encoding="utf-8" ?> \n<body copyright="...>\n</body>\n'

有可能任何人都能帮忙解决这个问题吗?非常感谢你。

1 个答案:

答案 0 :(得分:1)

您的问题未指定您希望在代码按预期工作时看到的内容,但这可能会对您有所帮助:

from bottle import get, run, template, response

@get('/list/item')
def listItems():
    r = requests.get('my/url/which/works/')
    response.content_type = 'text/plain'  # added this
    return r.content

...

唯一的变化是您的网络服务器现在将响应的内容类型设置为text/plain,这应该会让您的浏览器呈现页面。

从长远来看,如果(因为我从你的问题推断)你打算返回XML响应,那么我建议安装一个浏览器插件(here's an example),或者更好的是,使用{{1} }或curl以查看准确的回复。这将帮助您调试服务器的响应。