我遇到了使用Java发送带有ApacheHttpClient4
的GET请求到SAML网址(https://en.wikipedia.org/wiki/SAML_2.0)的问题。我从上一个请求获取的Location头中获取url,返回302.然后我在url上执行GET,格式为https://some.domain/?SAMLRequest=...&RelayState=...
。泽西以某种方式卡在它上面并且永远不会发送实际请求(我已检查过Charles并启用了日志过滤器,但GET从未发生过,它甚至都没有尝试)。它停留在以下行:
PoolingClientConnectionManager - Connection request: [route: {tls}->http://127.0.0.1:8888->https://some.domain][total kept alive: 3; route allocated: 2 of 2; total allocated: 7 of 20]
答案 0 :(得分:0)
这是一个艰难的,但我终于设法通过向客户端添加ClientFilter来解决它,只执行以下操作:
/**
* This class is only used to solve cases where a Client gets stuck in a redirect process.
*/
public class MyClientFilter extends ClientFilter {
@Override
public ClientResponse handle(ClientRequest clientRequest) throws ClientHandlerException {
return getNext().handle(clientRequest);
}
}
不知何故,它设法强制客户端继续关注重定向。