Подтвердить что ты не робот

Perl: curl: (1) HTTP-протокол не поддерживается или отключен в libcurl

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

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

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

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

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

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

#!/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];
4b9b3361

Ответ 1

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

my $file = qq{curl -sS "$url" |};

Ответ 2

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 не сделал.

Ответ 3

Я получал ту же ошибку, когда я использовал команду 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";

Ответ 4

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

Ответ 5

Вы пропускаете неправильно написанную часть протокола, как в "htpt://example.com", или как в менее очевидном случае, если перед частью протокола ставится пробел, как в " http://example.com/".

Источник: https://curl.haxx.se/docs/faq.html