Ruby 如何使用路缘?获取不支持的协议错误?

Ruby 如何使用路缘?获取不支持的协议错误?,ruby,curl,Ruby,Curl,我在使用执行简单的HTTP GET请求时遇到问题 代码是: def getHtml () raw = Curl::Easy.perform(@url) puts raw.body_str end 尝试运行时收到的错误消息是: Curl::Err::UnsupportedProtocolError (Curl::Err::UnsupportedProtocolError) from /home/<Username>/.gem/ruby/2.1.0/gems/curb-0

我在使用执行简单的HTTP GET请求时遇到问题

代码是:

def getHtml ()
  raw = Curl::Easy.perform(@url)
  puts raw.body_str
end
尝试运行时收到的错误消息是:

Curl::Err::UnsupportedProtocolError (Curl::Err::UnsupportedProtocolError)
   from /home/<Username>/.gem/ruby/2.1.0/gems/curb-0.8.5/lib/curl/easy.rb:317:in `perform'
   from getCorpusData.rb:6:in `getHtml'
   from getCorpusData.rb:11:in `<main>'
它适用于www.google.co.uk等示例:

* Protocol 'http not supported or disabled in libcurl
* Closing connection -1
/home/<username>/.gem/ruby/2.1.0/gems/curb-0.8.5/lib/curl/easy.rb:62:in `perform':    Curl::Err::UnsupportedProtocolError (Curl::Err::UnsupportedProtocolError)
from /home/<username>/.gem/ruby/2.1.0/gems/curb-0.8.5/lib/curl/easy.rb:317:in `perform'
from getCorpusData.rb:7:in `getHtml'
from getCorpusData.rb:16:in `<main>'
我还是不知道该怎么办

根据的外观,您只需传入您想要获取的站点的URL。如果要传入不同的头,可以传入这样的块

Curl::Easy.perform("http://www.google.co.uk") do |curl| 
  curl.headers["User-Agent"] = "myapp-0.0"
  curl.verbose = true
end

真正的问题是我没有头球

为了解决这个问题,我需要包含这些标题,这些标题是我通过开发人员工具上的网络选项卡发现的。在Chrome中,按CTRL+SHIFT+I并单击标记为“网络”的选项卡,然后发送所需请求并单击以查看详细信息,就可以访问该请求

我添加的标题在我的代码中如下所示:

require 'curb'

def getHtml(the_url)
  corpus = Curl::Easy.new(the_url) do |curl|
    curl.headers["Accept"] = "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8"
    curl.headers["Accept-Encoding"] = "gzip,deflate,sdch"
    curl.headers["Accept-Language"] = "en-US,en;q=0.8,es;q=0.6"
    curl.enable_cookies = true
    curl.follow_location = true
    curl.http_auth_types = :basic
    curl.username = "omitted"
    curl.password = "omitted"
    curl.headers["Connection"] = "keep-alive"
    curl.headers["Cookie"] = "ASPSESSIONIDSQCCCACB=KKPJLDIDNPDBDHCBLFDKBKLE; ASPSESSIONIDSQDAADDB=KCGNJBIAONDCMKCLGNNHEEFM; ASPSESSIONIDQQCDCACA=NNJHINEBBGIAJCLLICPGGMEK; ASPSESSIONIDQSBACBCB=CCOPGJBCOLBJMFJHHBIOJEHM; ASPSESSIONIDSSBBBDCA=FJBJFFOCFCPAGJJDMINGFHNE; ASPSESSIONIDSSDDDACA=CPFPDBLDIOMAALINKEEAFHKA; ASPSESSIONIDQQBAADCA=PIKHCNHACCFNDLPBGFLAEIGH; ASPSESSIONIDSQADDBDB=LJPPAJEBADDMFNAKELPPACOL; ASPSESSIONIDSQCBADDB=BHCHBFBCOAPNIANIPEILJDMK; ASPSESSIONIDQQACBADB=BPGLCBOCABKMOJEHGMGINDFD; ASPSESSIONIDQSCBAACA=FCMHMMKDKPJNKAONBHDLAMEJ; password=; email=; __utma=93336079.428180068.1390938982.1391083358.1392043146.4; __utmc=93336079; __utmz=93336079.1391007383.2.2.utmcsr=corpus.byu.edu|utmccn=(referral)|utmcmd=referral|utmcct=/; ii=24"
    curl.headers["Host"] = "corpus2.byu.edu"
    curl.headers["Referer"] = "http://corpus2.byu.edu/glowbe/x1.asp?a=&user=&word=&k=&h=&q1=&q=&c=glowbe"
    curl.headers["User-Agent"] = "GibSim-0.0"
    curl.verbose = true
  end

  corpus.perform
  return corpus.body_str
end

url = "http://corpus2.byu.edu/glowbe/x2.asp?chooser=seq&p=%5Bsolid%5D&w2=&wl=4&wr=4&r1=&r2=&ipos1=-select-&B7=SEARCH&showsec=y&sec1=0&sec2=0&sortBy=freq&sortByDo2=freq&minfreq1=freq&freq1=20&freq2=20&numhits=100&kh=100&groupBy=words&whatshow=raw&saveList=no&changed=&corpus=glowbe&word=&sbs=&sbs1=&sbsreg1=&sbsr=&sbsgroup=&redidID=&ownsearch=y&compared=&holder=&whatdo=seq&rand1=y&whatdo1=1&didRandom=n&minFreq=freq&s1=0&s2=0&s3=0&perc=mi"

puts getHtml(url)

我希望这对其他人有所帮助。

url的价值是什么?我现在要补充,这是一个带有用户代理的http请求,等等。您可以尝试获得更多详细的输出,如图所示,传入一个块,然后检查出来谢谢:谢谢,我会尝试一下,让您知道!仍然不起作用,但这似乎是我的libcurl的一个问题,问题已经更新,谢谢。虽然你解决了这个问题很好,但你的回答不会帮助其他人解决它。请包括您添加的标题。还请描述什么是“开发人员工具上的网络选项卡”,以及您学到了什么。事实上,这只是一个评论,不是答案,不应该作为答案发布。你是对的,这也是我没有将其标记为答案的原因,但我离题了!将编辑此帖子。
 'http://corpus2.byu.edu/glowbe/x2.asp?chooser=seq&p=%5B%3Dbat%5D&w2=&wl=4&wr=4&r1=&r2=&ipos1=-select-&B7=SEARCH&showsec=y&sec1=0&sec2=0&sortBy=freq&sortByDo2=freq&minfreq1=freq&freq1=20&freq2=20&numhits=100&kh=100&groupBy=words&whatshow=raw&saveList=no&changed=&corpus=glowbe&word=&sbs=&sbs1=&sbsreg1=&sbsr=&sbsgroup=&redidID=&ownsearch=y&compared=&holder=&whatdo=seq&rand1=y&whatdo1=1&didRandom=n&minFreq=freq&s1=0&s2=0&s3=0&perc=mi' -H 'Accept-Encoding: gzip,deflate,sdch' -H 'Accept-Language: en-US,en;q=0.8,es;q=0.6'
Curl::Easy.perform("http://www.google.co.uk") do |curl| 
  curl.headers["User-Agent"] = "myapp-0.0"
  curl.verbose = true
end
require 'curb'

def getHtml(the_url)
  corpus = Curl::Easy.new(the_url) do |curl|
    curl.headers["Accept"] = "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8"
    curl.headers["Accept-Encoding"] = "gzip,deflate,sdch"
    curl.headers["Accept-Language"] = "en-US,en;q=0.8,es;q=0.6"
    curl.enable_cookies = true
    curl.follow_location = true
    curl.http_auth_types = :basic
    curl.username = "omitted"
    curl.password = "omitted"
    curl.headers["Connection"] = "keep-alive"
    curl.headers["Cookie"] = "ASPSESSIONIDSQCCCACB=KKPJLDIDNPDBDHCBLFDKBKLE; ASPSESSIONIDSQDAADDB=KCGNJBIAONDCMKCLGNNHEEFM; ASPSESSIONIDQQCDCACA=NNJHINEBBGIAJCLLICPGGMEK; ASPSESSIONIDQSBACBCB=CCOPGJBCOLBJMFJHHBIOJEHM; ASPSESSIONIDSSBBBDCA=FJBJFFOCFCPAGJJDMINGFHNE; ASPSESSIONIDSSDDDACA=CPFPDBLDIOMAALINKEEAFHKA; ASPSESSIONIDQQBAADCA=PIKHCNHACCFNDLPBGFLAEIGH; ASPSESSIONIDSQADDBDB=LJPPAJEBADDMFNAKELPPACOL; ASPSESSIONIDSQCBADDB=BHCHBFBCOAPNIANIPEILJDMK; ASPSESSIONIDQQACBADB=BPGLCBOCABKMOJEHGMGINDFD; ASPSESSIONIDQSCBAACA=FCMHMMKDKPJNKAONBHDLAMEJ; password=; email=; __utma=93336079.428180068.1390938982.1391083358.1392043146.4; __utmc=93336079; __utmz=93336079.1391007383.2.2.utmcsr=corpus.byu.edu|utmccn=(referral)|utmcmd=referral|utmcct=/; ii=24"
    curl.headers["Host"] = "corpus2.byu.edu"
    curl.headers["Referer"] = "http://corpus2.byu.edu/glowbe/x1.asp?a=&user=&word=&k=&h=&q1=&q=&c=glowbe"
    curl.headers["User-Agent"] = "GibSim-0.0"
    curl.verbose = true
  end

  corpus.perform
  return corpus.body_str
end

url = "http://corpus2.byu.edu/glowbe/x2.asp?chooser=seq&p=%5Bsolid%5D&w2=&wl=4&wr=4&r1=&r2=&ipos1=-select-&B7=SEARCH&showsec=y&sec1=0&sec2=0&sortBy=freq&sortByDo2=freq&minfreq1=freq&freq1=20&freq2=20&numhits=100&kh=100&groupBy=words&whatshow=raw&saveList=no&changed=&corpus=glowbe&word=&sbs=&sbs1=&sbsreg1=&sbsr=&sbsgroup=&redidID=&ownsearch=y&compared=&holder=&whatdo=seq&rand1=y&whatdo1=1&didRandom=n&minFreq=freq&s1=0&s2=0&s3=0&perc=mi"

puts getHtml(url)