限制rest-client读取的响应大小

Old*_*Pro 5 ruby rest-client

我正在使用Ruby gem rest-client(1.6.7)使用HTTP GET请求检索数据.但是,有时响应比我想要处理的大,所以我希望有一些方法可以在RestClient超过我设置的大小限制时停止读取.该文件说:

对于通用API未涵盖的情况,您可以使用提供较低级API的RestClient :: Request类.

但我不明白这对我有什么帮助.我没有看到任何看起来像处理传入数据流的钩子的东西,只有在读完整个东西后我才能执行的操作.我不想浪费时间和内存将大量响应读入缓冲区而只是丢弃它.

如何设置上的数据的读出的数量是有限RestClientGET请求?或者是否有一个我可以使用的不同客户端可以轻松设置这样的限制?

小智 2

rest-client 在下面使用 ruby​​ 的 Net::HTTP: https: //github.com/rest-client/rest-client/blob/master/lib/restclient/request.rb#L303

不幸的是,Net::HTTP 似乎不会让您根据其长度放弃响应,毕竟它使用此方法来发出所有请求: http://docs.ruby-lang.org/en/2.0 .0/Net/HTTP.html#method-i-transport_request

如您所见,它使用 HTTPResponse 从服务器读取 HTTP 响应: http://ruby-doc.org/stdlib-2.0.0/libdoc/net/http/rdoc/Net/HTTPResponse.html#method-i-读取正文

HTTPResponse 似乎是您可以控制是读取所有响应并将其存储到内存中,还是读取并丢弃的地方。如果您甚至不想阅读响应,我想您需要关闭套接字。

我不知道是否有具有您需要的功能的休息客户端。我想如果您想拥有如此细粒度的控制,您需要编写自己的小休息客户端。