5

我正在使用 Ruby gem rest-client (1.6.7) 来使用 HTTP GET 请求检索数据。但是,有时响应比我想要处理的要大,所以我想要一些方法来RestClient停止阅读,一旦它超过了我设置的大小限制。文件说_

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

但我看不出这对我有什么帮助。我看不到任何看起来像处理传入数据流的钩子的东西,只有在读取整个内容后我可以执行的操作。我不想浪费时间和内存将巨大的响应读取到缓冲区中,只是为了丢弃它。

如何设置请求中读取RestClient的数据量限制?GET或者我可以使用不同的客户端来轻松设置这样的限制?

4

1 回答 1

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 似乎是您可以控制是读取所有响应并将其存储到内存中还是读取并丢弃的地方。我你甚至不想阅读响应,我想你需要关闭套接字。

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

于 2015-08-20T01:58:09.120 回答