2016-01-20 79 views
0

我想编写一个扭曲的代理,将非常大的GET请求分成更小的固定大小范围,并将其发送到另一个代理(使用范围:字节)。另一个代理不允许大的响应,并且当响应大时,它返回一个502.带范围拆分的扭曲代理

我该如何在一个502错误中实现一个代理,它试图将请求分成更小的允许块。文档很难遵循。我知道我需要扩展ProxyRequest,但从那里我有点卡住了。

它不必是一个扭曲的代理,但它似乎很容易修改,我至少设法通过将connectTCP设置为我的代理(ProxyRequest中),将其未修改的请求转发给代理。解析)。

回答

1

实际上,扩展ProxyRequest可能并不是最简单的方法; ProxyRequest非常强烈地假设一个请求=一个响应,而在这里你想把一个请求分成多个请求。

更容易将简单的写你想要做的是什么Resource实现,简单是:

    render_GET
  1. ,构造出一个URL进行多次传出请求使用Agent
  2. 回报NOT_DONE_YET
  3. 作为每个响应进来,呼吁您的原始传入请求request.write,然后发出一个新的请求与Range标头
  4. 终于在最后一个响应进来,叫request.finish你的原始请求

你可以简单的构建一个Site对象与你Resource,并在您Resource设置为true isLeaf所以你Resource没有实现任何遍历逻辑,并且可以使用request.prePathURLrequest.postpath来构建URL。 (request.postpath很遗憾没有记录;它是请求中尚未遍历的路径段的列表)。

+0

谢谢。我没有想到试图超越网站。试图让代理为我的问题工作。 – Xonar