如何讓Ruby的Net :: HTTP模塊取消請求?如何取消Ruby Net :: HTTP請求?
以下對http.finish
的調用引發錯誤。我得到這樣的印象,即響應對象不知道連接已關閉,仍然需要更多數據。
我想避免發出HEAD請求。因此,請發出GET請求,除非內容類型爲HTML,否則取消請求。
Net::HTTP.start(uri.host, uri.port) do |http|
http.request_get(uri.path) do |response|
unless response['content-type'] =~ /html/i
http.finish
end
end
end
/usr/lib/ruby/1.8/net/http.rb:2241:in `stream_check': attempt to read body out of block (IOError)
from /usr/lib/ruby/1.8/net/http.rb:2171:in `read_body'
from /usr/lib/ruby/1.8/net/http.rb:2198:in `body'
from /usr/lib/ruby/1.8/net/http.rb:2137:in `reading_body'
from /usr/lib/ruby/1.8/net/http.rb:1052:in `request'
from /usr/lib/ruby/1.8/net/http.rb:948:in `request_get'
from net.rb:9
from /usr/lib/ruby/1.8/net/http.rb:543:in `start'
from /usr/lib/ruby/1.8/net/http.rb:440:in `start'
from net.rb:7
沒錯,但我想強制關閉連接。除非內容類型符合預期,否則我不想完成請求。我也想避免在每個url上運行一個.head請求。所以,.get,如果html繼續,否則關閉連接。 – Alexandre 2010-02-01 21:50:01
這就是我想要避免的。我想通知http客戶端,我不想繼續閱讀響應主體。 – Alexandre 2010-02-01 21:57:59
除非您調用response.read_body,否則它不應該完成請求。如果你不打算使用它,你應該消除頭呼。 – klochner 2010-02-01 21:59:12