PHP возвращает контент длиной 0 в urllib для Python - PullRequest
1 голос
/ 20 августа 2010

Мой код извлекает данные CSV со страницы PHP, используя httplib. Когда я открываю страницу в Firefox или Chrome, данные отображаются очень хорошо. Однако, когда я пытаюсь получить его с помощью своего кода Python, я получаю заголовок с длиной содержимого: 0 и без данных. Эта страница является единственной, которая делает это - на другой странице в том же каталоге выборка из httplib python работает просто отлично. Может кто-нибудь сказать мне, что я делаю не так?

код:

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 ]

1 голос
/ 20 августа 2010

Возможно, фильтрация по заголовку User-Agent - попробуйте подменить, например, ваш Firefox.

Если вы не сможете использовать Firefox для подключения к локальному серверу Python, чтобы точно узнать, какие заголовки он отправляет, а затем скопировать их.

1 голос
/ 20 августа 2010

Возможно, PHP-скрипт ожидает увидеть некоторые HTTP-заголовки или заголовки, которые модуль httplib не отправляет. Например, httplib не отправляет заголовки Accept, Accept-Language или User-Agent по умолчанию. Вам может понадобиться добавить один или несколько из них в запрос request (). Похоже, он действительно посылает правильный заголовок Host, что было моей первой догадкой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...