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