#ruby #curl #ssl
#ruby #curl #ssl
Вопрос:
Я хотел бы использовать curl для доступа к URL https, но у меня всегда есть сообщение об ошибке… мой однострочный код
`curl https://www.google.com`
но когда я запускаю, я получаю
"curl: (1) Protocol https not supported or disabled in libcurl".
В любом случае, я пытаюсь вызвать curl вручную в командной строке, и он работает нормально.
Итак, я пытаюсь…
C:>curl https://www.google.com
и я могу иметь..
<HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8">
<TITLE>302 Moved</TITLE></HEAD><BODY>
<H1>302 Moved</H1>
The document has moved
<A HREF="https://www.google.co.th/?gws_rd=cramp;amp;ei=FAe5U62VBMWdugSNvoHIAg">here</A>.
</BODY></HTML>
Обратите внимание, что я уже загрузил curl версии 7.21.7, которая поддерживает SSL, но у меня все еще та же ошибка.
Не могли бы вы что-нибудь посоветовать?
Обновление Я пытаюсь использовать open3. Это, безусловно, не сработало, но на этот раз он показывает curl: (6) Не удалось разрешить host: https
irb(main):001:0> require 'open3'
=> true
irb(main):002:0> cmd = 'curl https:\rubygems.org'
=> "curl https:\rubygems.org"
irb(main):003:0> Open3.popen3(cmd) do |stdin, stdout, stderr, wait_hr|
irb(main):004:1* puts "stdout is: " stdout.read
irb(main):005:1> puts "stderr is: " stderr.read
irb(main):006:1> end
stdout is:
stderr is: % Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0
0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0curl: (6) Could not resolve host: https
=> nil
Комментарии:
1. Может быть, вы запускаете Ruby (file или irb / pry) и обычную команду из разных каталогов? Попробуйте изменить каталог, например, на C и запустите irb / pry из этого, и попробуйте эту команду в кнопках возврата. В любом случае, в зависимости от вашей ОС (я думаю, вы используете Windows) вы можете попробовать другие методы из Ruby: mentalized.net/journal/2010/03/08/… Последние 2 или 3, насколько я помню, были только с * nix, но я могу ошибаться.
2. ДА. Я запускаю скрипт и ручную команду в том же directoty. Я также пробовал обе системы (‘curl < ‘/» rel=»nofollow noreferrer»> google.com>’ ) и exec (‘curl < /» rel=»nofollow noreferrer»> google.com > ) по-прежнему показывают то же сообщение об ошибке. Но когда я переключаюсь на http вместо https, я могу получить html-тело при запуске ruby.
3. Попробуйте это:
`cmd /c curl https://www.google.com`
Ответ №1:
Через некоторое время я заметил, что мой ruby всегда вызывает curl.exe из C:WindowsSysWOW64 (Я не знаю, почему ??) и это curl версии 7.32.0 x86_64-pc-win32. Я предполагаю, что в этом не включен ssl. В то время как другой curl.exe в C:Windowswin32 это версия 7.21.7, о которой я знаю, что она с ssl. —> Это должно быть основной причиной того, что у меня есть результат зависимости.
В конечном итоге я загружаю и устанавливаю последнюю версию curl с ssl, v7.37.0. Теперь он работает нормально, либо я запускаю с помощью кнопок возврата, либо вручную в командной строке. Проблема исправлена.