Faraday: Get μš”μ²­ μ‹œ Zlib::DataError

에 λ§Œλ“  2012λ…„ 02μ›” 16일  Β·  9μ½”λ©˜νŠΈ  Β·  좜처: lostisland/faraday

μš”μ²­ μ‹œ 'Zlib::DataError: unknown compression method' 였λ₯˜κ°€ λ°œμƒν•˜λŠ” λͺ‡ 가지 URL이 ν‘œμ‹œλ©λ‹ˆλ‹€.

call' /faraday/request/url_encoded.rb:14:in 호좜'
/faraday/connection.rb:215:in run_request' /faraday/connection.rb:88:in get'
/faraday-a1c2dcf1c5c0/lib/faraday.rb:24:in `method_missing'

μ˜ˆμ‹œ:
Faraday.get('http://www.imaginativeuniversal.com/blog/post/2012/02/14/Why-the-Kinect-for-Windows-Sensor-Costs-2424999.aspx')

Ruby 1.9.3μ—μ„œ 0.7.6 및 0.8.RC2λ₯Ό ν…ŒμŠ€νŠΈν–ˆμŠ΅λ‹ˆλ‹€.

λ˜ν•œ λ™μΌν•œ URLμ—μ„œ HTTPartyλ₯Ό ν…ŒμŠ€νŠΈν–ˆλŠ”λ° μž‘λ™ν•˜λŠ” κ²ƒμœΌλ‘œ λ³΄μž…λ‹ˆλ‹€. ν•˜μ§€λ§Œ 더 이상 파고 듀지 μ•Šμ•˜μŠ΅λ‹ˆλ‹€.

감사 ν•΄μš”,
슀콧

κ°€μž₯ μœ μš©ν•œ λŒ“κΈ€

μ„œλ²„κ°€ μ§€μ›λ˜μ§€ μ•ŠλŠ” μ••μΆ• 방법을 μ‚¬μš©ν•˜μ—¬ 응닡을 보내고 μžˆμŠ΅λ‹ˆλ‹€. μ„œλ²„ 잘λͺ»μΈκ±° κ°™μŠ΅λ‹ˆλ‹€.

μš”μ²­ 헀더λ₯Ό μ„€μ •ν•˜μ—¬ 이 문제λ₯Ό ν•΄κ²°ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

"인코딩 수락" => "μ—†μŒ"

이것이 μž‘λ™ν•˜λŠ”μ§€ ν™•μ‹€ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. Typhoeus와 같은 λ‹€λ₯Έ μ–΄λŒ‘ν„°λ₯Ό μ‚¬μš©ν•  μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€.

λͺ¨λ“  9 λŒ“κΈ€

net_http.rbμ—μ„œ μ†ŒμŠ€λ₯Ό μ‚΄νŽ΄λ³΄κ³  HTTPParty와 비ꡐ:

  • FaradayλŠ” Ruby 1.9κ°€ gzip을 μ²˜λ¦¬ν•˜κΈ° λ•Œλ¬Έμ— μš”μ²­ λŒ€μ‹  get μ‚¬μš©μ— λŒ€ν•œ μ„€λͺ…κ³Ό ν•¨κ»˜ .get을 μ‚¬μš©ν•©λ‹ˆλ‹€.
  • HTTPartyλŠ” .get을 μ‚¬μš©ν•˜κ³  자체적으둜 μ••μΆ•/μˆ˜μΆ•μ„ μ²˜λ¦¬ν•©λ‹ˆλ‹€.

버그가 μ‹€μ œλ‘œ Ruby에 μžˆλŠ” 것 κ°™μŠ΅λ‹ˆλ‹€. λ‹€μŒμ€ 더 κΉ¨λ—ν•œ μƒ˜ν”Œμž…λ‹ˆλ‹€.

'net/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)
μš”μ²­ = Net::HTTP::Get.new(uri.request_uri)

http.request(μš”μ²­).code #ok
http.get(μš”μ²­).code #μ‹€νŒ¨

Net::HTTP#get λŠ” μš”μ²­ 객체λ₯Ό μˆ˜μ‹ ν•˜κΈ° μœ„ν•œ 것이 μ•„λ‹ˆλΌ κ²½λ‘œμ™€ (μ„ νƒμ μœΌλ‘œ) 헀더λ₯Ό ν•„μš”λ‘œ ν•©λ‹ˆλ‹€. 그런 λ‹€μŒ 자체 μš”μ²­μ„ μž‘μ„±ν•©λ‹ˆλ‹€. http://rubydoc.info/stdlib/net/1.9.2/Net/HTTP#get -instance_method μ°Έμ‘°

μ„œλ²„κ°€ μ§€μ›λ˜μ§€ μ•ŠλŠ” μ••μΆ• 방법을 μ‚¬μš©ν•˜μ—¬ 응닡을 보내고 μžˆμŠ΅λ‹ˆλ‹€. μ„œλ²„ 잘λͺ»μΈκ±° κ°™μŠ΅λ‹ˆλ‹€.

μš”μ²­ 헀더λ₯Ό μ„€μ •ν•˜μ—¬ 이 문제λ₯Ό ν•΄κ²°ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

"인코딩 수락" => "μ—†μŒ"

이것이 μž‘λ™ν•˜λŠ”μ§€ ν™•μ‹€ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. Typhoeus와 같은 λ‹€λ₯Έ μ–΄λŒ‘ν„°λ₯Ό μ‚¬μš©ν•  μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€.

루비 λ²„κ·Έμž…λ‹ˆλ‹€.

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

κ΅¬ν•˜λŠ”:

net/http.rb:1035:in `inflate': unknown compression method (Zlib::DataError)

@mislav μ„€μ • "accept-encoding" => "none"은 λ‚΄κ°€ μ‹Έμš°κ³  있던 zlib 였λ₯˜λ₯Ό μˆ˜μ •ν–ˆμŠ΅λ‹ˆλ‹€. 감사 ν•΄μš”.

이것이 λͺ…λ°±ν•˜λ‹€λ©΄ μ£„μ†‘ν•˜μ§€λ§Œ μ •ν™•νžˆ μ–΄λ–»κ²Œ ν•΄μ•Ό ν•©λ‹ˆκΉŒ?

@roryc89 μ—°κ²° 개체λ₯Ό ꡬ성할 λ•Œ:

Faraday.new headers: { accept_encoding: 'none' } do |conn|
  # ...
end

λ˜λŠ” μš”μ²­λ‹Ή:

conn.get '/foo/bar' do |req|
  req.headers[:accept_encoding] = 'none'
end

@mislav μ„€μ • "accept-encoding" => "none"도 μ €λ₯Ό μœ„ν•΄ zlib 였λ₯˜λ₯Ό μˆ˜μ •ν–ˆμŠ΅λ‹ˆλ‹€. κ°μ‚¬ν•©λ‹ˆλ‹€! πŸ‘

이것은 μ €μ—κ²Œλ„ νš¨κ³Όμ μ΄μ—ˆμŠ΅λ‹ˆλ‹€. κ°μ‚¬ν•©λ‹ˆλ‹€!

이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰