PHP将内容长度0返回到python的urllib

时间:2010-08-19 21:45:45

标签: php python content-length

我的代码使用httplib从PHP页面获取CSV数据。当我在Firefox或Chrome中打开页面时,数据显示正常。但是,当我尝试使用我的python代码获取它时,我得到一个内容长度为0且没有数据的标头。这个页面是唯一一个这样做的 - 在同一目录的另一个页面中,python httplib提取工作正常。有人能告诉我我做错了吗?

代码:

FILE_LOC = '/core/csv.php'
argstr = '?type=' + self.type + '&id=' + self.id
conn = httplib.HTTPConnection(SERVER_ADDRESS)
conn.request('GET', FILE_LOC + argstr)
resp = conn.getresponse()
csvstr = resp.read()

回复标题:

[('content-length', '0'), ('x-powered-by', 'PHP/5.1.6'),
('server', 'Apache/2.2.3 (CentOS)'), ('connection', 'close'),
('date', 'Thu, 19 Aug 2010 21:39:44 GMT'), ('content-type', 'text/html; charset=UTF-8')]

2 个答案:

答案 0 :(得分:1)

也许PHP脚本希望看到httplib模块没有发送的一些HTTP头或头。例如,httplib默认情况下似乎不发送Accept,Accept-Language或User-Agent标头。您可能需要在request()调用中添加一个或多个。它似乎确实发送了一个正确的主机头,这是我的第一个猜测。

答案 1 :(得分:1)

可能过滤用户代理标题 - 尝试欺骗,例如你的Firefox。

如果不能使用Firefox连接到本地Python服务器以确切地查看它发送的标头,然后复制它们。