2016-08-05 3 views
1

У меня возникла проблема с отправкой запроса GET на Java с кодом ApacheHttpClient4 на URL-адрес SAML (https://en.wikipedia.org/wiki/SAML_2.0). Я извлекаю url из заголовка Location, который я получаю по предыдущему запросу, возвращая 302. Затем я делаю GET на URL-адресе, который находится в формате https://some.domain/?SAMLRequest=...&RelayState=.... Джерси как-то застрял на нем и никогда не отправляет фактический запрос (я проверил оба Чарльза и включил фильтр регистрации, но GET никогда не бывает, он даже не пытается). Он застревает на следующей строке:Джерси клиент застрял в запросе SAML 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

Это был непростой, но я наконец-то удалось решить путем добавления 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); 
    } 
} 

Каким-то образом ему удается заставить клиента продолжать следовать переадресации.

Смежные вопросы