如何告知特定的喷涂客户端请求以遵循所有重定向?

时间:2016-04-14 08:40:06

标签: redirect spray http-redirect spray-client

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

现在看来是这样的:

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

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

1 个答案:

答案 0 :(得分:1)

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

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

所以我考虑添加更新的HostConnectorSettings来添加自定义行为,但我担心它会在Http对象中定义。因此,没有更新此设置的选项。它们在配置选项中定义。正如你所说,你正在寻找另一种选择,但这并没有解决问题。

最后一点,我认为不可能只改变GET请求的行为。 Here您可以了解如何遵循RFC2616

所以TLDR:根据您的配置,所有管道都将遵循重定向或不重定向,但不可能区分哪些管道将执行或不执行。