0

我的应用程序中有一个特定的管道,它必须遵循所有重定向(为了理智起见,最多可以说 50 个),跨越任何域和协议(例如,它可以遵循http://somewhere.comhttps://somewhere.else。 com ),但仅适用于 GET 请求。我的应用程序中没有其他管道应该这样做。

这是它现在的样子:

val pipeline = sendReceive ~> decode(Gzip) ~> decode(Deflate) ~> unmarshal[String]

如何以与主机无关的方式(即不通过配置选项或HostConnectorSetup)在管道的配置中指定它?

4

1 回答 1

1

我认为您无法创建具有定制行为的特定管道。

重定向计数器称为maxRetries,存储在RequestContext中,位于称为 的私有对象内HttpHostConnector。并且此信息仅来自HostConnectorSettings

于是想着添加一个updatedHostConnectorSettings来添加自定义的行为,但恐怕是在Http对象中定义的。所以没有更新此设置的选项。它们在配置选项中定义。正如您所说,您正在寻找另一种选择,这并不能解决问题。

最后一件事,我认为也不能仅更改 GET 请求的行为。在这里你可以看到遵循RFC2616是如何工作的。

所以 TLDR:所有管道都将遵循或不遵循重定向,具体取决于您的配置,但无法区分哪些会执行或不执行。

于 2016-05-11T11:06:47.123 回答