LINUX.ORG.RU

perl (HTTP::Tiny) не может прочитать файл, ошибка 404

 ,


0

1

Всем привет, есть такой погодный код :)

#!/usr/bin/env perl
use HTTP::Tiny;

my $response = new HTTP::Tiny->get('http://informer.gismeteo.ru/xml/33745_1.xml');
die "☼ $response->{status}: $response->{reason}\n" unless $response->{success};
die "Cisco" if $response->{content} =~ /xxx.xxx.xxx.xxx:8080/;
# температура                        $1         $2
$response->{content} =~ /<HEAT min="(.*)" max="(.*)"\/>/;
my $temperature = "$1..$2";
# ветер                              $1         $2               $3
$response->{content} =~ /<WIND min="(.*)" max="(.*)" direction="(.*)"\/>/;
my $speed = eval "($1+$2)/2";                   # скорость
my $direct = qw(С С-В В Ю-В Ю Ю-З З С-З)[$3];   # направление
# давление                               $1         $2
$response->{content} =~ /<PRESSURE max="(.*)" min="(.*)"\/>/;
my $pressure = eval "($1+$2)/2";
# вывод на экран
print "☼ $temperature °C; $speed м/c $direct; $pressure мм";

При запуске получаю ☼ 404: Not Found. А в браузере захожу по этому адресу и всё ок, xml файл на месте. Что делать, братцы? До недавнего времени скрипт работал.

UPD:

http_proxy=http://ip:port/ wget -O- http://informer.gismeteo.ru/xml/33745_1.xml 
выдаёт xml-файл. Как передать в HTTP::Tiny опцию proxy? Пробовал так, не помогло.

Deleted

Последнее исправление: Deleted (всего исправлений: 2)
Ответ на: комментарий от gadfly

wget всё отдает

Опа! wget не отдаёт.

Deleted
()

А в браузере захожу по этому адресу и всё ок, xml файл на месте.

Уверен? А у меня 404. Про referer не забыл?

router ★★★★★
()
Ответ на: комментарий от router

А в браузере захожу по этому адресу и всё ок, xml файл на месте.

Уверен?

угу.

Про referer не забыл?

Думаешь из за этого? что делать?

Deleted
()
Ответ на: комментарий от gadfly

wget запущенный через proxy отдаёт.

изменил код так:

use HTTP::Tiny;

my $http = new HTTP::Tiny(http_proxy => 'http://ip:port/');
my $response = $http->get('http://informer.gismeteo.ru/xml/33745_1.xml');

всё равно 404. http_proxy => 'ip:port' тоже никак не влияет.

Deleted
()
$ perl kk.pl 
☼ 21..23 °C; 3 м/c С-В; 749 мм

УМВР. Дело в наличии прокси.

DELIRIUM ☆☆☆☆☆
()
Ответ на: комментарий от art_corp

сделал проще: запустил perl скрипт также как wget: http_proxy=http://ip:port/ perl weather.pl

Deleted
()

Это читал: http://search.cpan.org/~dagolden/HTTP-Tiny-0.047/lib/HTTP/Tiny.pm#PROXY_SUPPORT ? Попробуй в констру том передавать proxy вместо http_proxy.

А вообще — использование переменных окружения гибче. Я так понимаю у тебя скрипт для коньков? Не вставляй внутрь прокси, проще будет дистрибутировать :)

KennyMinigun ★★★★★
()
Ответ на: комментарий от KennyMinigun

Это читал: http://search.cpan.org/~dagolden/HTTP-Tiny-0.047/lib/HTTP/Tiny.pm#PROXY_SUPPORT ? Попробуй в констру том передавать proxy вместо http_proxy.

первым делом читал. Только не передавал просто proxy, а http_proxy. Почему важно именно так?

Я так понимаю у тебя скрипт для коньков? Не вставляй внутрь прокси, проще будет дистрибутировать :)

так и сделал :)

Deleted
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.