Perl: curl: (1) Протокол http не поддерживается или отключен в libcurl - PullRequest
42 голосов
/ 13 июля 2011

Perl Вопрос . Я пытаюсь запустить этот скрипт в отладчике.

У меня Aptana + Epic + ActivePerl 5.12.4, работающая на Windows 7x64. Сценарий запускается нормально, но я получаю сообщение об ошибке:

curl -sS http://intranet.mycompany.org/directory/directory.xml

Команда выше работает нормально ... но если я запускаю отладчик, я получаю эту ошибку:

curl: (1) Protocol 'http not supported or disabled in libcurl

Первая часть скрипта ниже:

#!/usr/bin/perl
use strict;

use XML::Parser;
use Data::Dumper;

my $url = 'http://intranet.atlanticgeneral.org/directory/directory.xml';
my $output = 'C:\global.gabook';

my $file = "curl -sS '$url' |";
my $parser = new XML::Parser(Style => 'Tree');
my $tree = $parser->parsefile($file)->[1];

Ответы [ 4 ]

103 голосов
/ 13 июля 2011

Windows не любит одинарные кавычки в командах. Попробуйте использовать в команде двойные кавычки, используя экранирование qq {}. Просто измените одну строку:

my $file = qq{curl -sS "$url" |};
3 голосов
/ 14 июля 2011

Wooble ~

"Я предполагаю, что причиной этого являются дополнительные одинарные кавычки вокруг $ url"

Когда я удалил кавычки вокруг '$ url' это сработало.Цитаты работали в RedHat Perl, но не работали в моем отладчике Windows Perl:

#!/usr/bin/perl
use strict;

use XML::Parser;
use Data::Dumper;

my $url = 'http://intranet.atlanticgeneral.org/directory/directory.xml';
my $output = 'C:\global.gabook';

my $file = "curl -sS $url |";
my $parser = new XML::Parser(Style => 'Tree');
my $tree = $parser->parsefile($file)->[1];

Публикация как ответ, так как Wooble не сделал.

2 голосов
/ 05 августа 2014

Я получал ту же ошибку, когда использовал команду curl в своей java-программе следующим образом

    String command = "curl 'http://google.com'";
     try
       {            
           Process proc = Runtime.getRuntime().exec(command);
        .......
        }catch(Exception e){}

Изменение команды на следующую исправило эту ошибку

      String command = "curl http://google.com";

На самом деле,Это может быть проблемой из-за интерпретатора оболочки.Я использовал команду curl, как показано ниже:

String command = "curl  -duser.name=hdfs -dexecute=select+*+from+logdata.test; -dstatusdir=test.output http://hostname:50111/templeton/v1/hive";
1 голос
/ 13 июля 2011

В качестве альтернативы (без необходимости использования внешней программы) вы можете использовать LWP :: UserAgent для извлечения документа.

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