Ruby 如何使用路缘?获取不支持的协议错误?
我在使用执行简单的HTTP GET请求时遇到问题 代码是: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
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)