Saya melihat beberapa url yang ketika diminta menghasilkan kesalahan 'Zlib::DataError: metode kompresi tidak diketahui'
/faraday/adapter/net_http.rb:59:di call'
/faraday/request/url_encoded.rb:14:in
call'
/faraday/connection.rb:215:di run_request'
/faraday/connection.rb:88:in
dapatkan'
/faraday-a1c2dcf1c5c0/lib/faraday.rb:24:dalam `method_missing'
Contoh:
Faraday.get('http://www.imaginativeuniversal.com/blog/post/2012/02/14/Why-the-Kinect-for-Windows-Sensor-Costs-2424999.aspx')
Saya telah menguji pada 0.7.6 dan 0.8.RC2 pada Ruby 1.9.3.
Saya juga menguji HTTParty pada url yang sama dan tampaknya berfungsi...tetapi saya belum menggali lebih jauh.
Terima kasih,
skot
Melihat ke sumber di net_http.rb dan membandingkannya dengan HTTParty:
Sepertinya bug itu sebenarnya ada di Ruby. Berikut adalah sampel pembersih:
memerlukan 'bersih/https'
url = " http://www.imaginativeuniversal.com/blog/post/2012/02/14/Why-the-Kinect-for-Windows-Sensor-Costs-2424999.aspx "
uri = URI.parse(url)
http = Net::HTTP.new(uri.host, uri.port)
permintaan = Net::HTTP::Get.new(uri.request_uri)
http.request(permintaan).kode #ok
http.get(permintaan).kode #gagal
Net::HTTP#get
tidak dimaksudkan untuk menerima objek permintaan, ia mengharapkan jalur dan (opsional) header. Itu kemudian membangun permintaannya sendiri. Lihat http://rubydoc.info/stdlib/net/1.9.2/Net/HTTP#get -instance_method
Server mengirimkan respons menggunakan metode kompresi yang tidak didukung. Sepertinya itu kesalahan server.
Anda dapat mencoba mengatasinya dengan mengatur header permintaan:
"accept-encoding" => "tidak ada"
Tidak yakin apakah ini akan berhasil. Anda juga dapat menggunakan adaptor lain, seperti Typhoeus.
Ini adalah kutu rubi.
url = "http://www.imaginativeuniversal.com/blog/post/2012/02/14/Why-the-Kinect-for-Windows-Sensor-Costs-2424999.aspx"
uri = URI.parse(url)
Net::HTTP.start(uri.host, uri.port) do |http|
response = http.get(uri.request_uri)
p response.body[0,100]
end
Mendapatkan:
net/http.rb:1035:in `inflate': unknown compression method (Zlib::DataError)
@mislav pengaturan "accept-encoding" => "none" memperbaiki kesalahan zlib yang saya perjuangkan. Terima kasih.
Maaf jika ini jelas tetapi bagaimana saya melakukan ini dengan tepat?
@roryc89 Saat Anda membuat objek koneksi:
Faraday.new headers: { accept_encoding: 'none' } do |conn|
# ...
end
Atau per permintaan:
conn.get '/foo/bar' do |req|
req.headers[:accept_encoding] = 'none'
end
@mislav pengaturan "accept-encoding" => "none" memperbaiki kesalahan zlib untuk saya juga, terima kasih! 👍
Ini bekerja untuk saya juga, Terima kasih kawan!!
Komentar yang paling membantu
Server mengirimkan respons menggunakan metode kompresi yang tidak didukung. Sepertinya itu kesalahan server.
Anda dapat mencoba mengatasinya dengan mengatur header permintaan:
"accept-encoding" => "tidak ada"
Tidak yakin apakah ini akan berhasil. Anda juga dapat menggunakan adaptor lain, seperti Typhoeus.