我使用Ruby gem rest-client(1.6.7)使用HTTP GET请求检索数据。但是,有时响应比我想要处理的要大,所以我希望有一些方法让RestClient
一旦超过我设置的大小限制就停止读取。 documentation说
对于通用API未涵盖的情况,您可以使用提供较低级别API的RestClient :: Request类。
但我不知道这对我有什么帮助。我没有看到任何看起来像处理传入数据流的钩子的东西,只有在读完整个东西后我才能执行的操作。我不想浪费时间和记忆来读取缓冲区中的巨大响应,只是为了丢弃它。
如何在RestClient
请求中设置GET
读取的数据量限制?或者是否有一个我可以使用的不同客户端可以轻松设置这样的限制?
答案 0 :(得分: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-read_body
HTTPResponse似乎是您可以控制是否读取所有响应并将其存储到内存中,或者读取并丢弃的地方。 我甚至不想阅读回复,我想你需要关闭套接字。
我不知道是否有其他具有您需要的功能的客户端。我想如果你想拥有这样一个细粒度的控件,你需要编写自己的小客户端。