Spring boot - Rest template

Ola,

Estou usando o RestTemplate.class para consumir serviços externos, cheguei em um ponto onde tenho que fazer o login para depois consumir um endpoint.

Porem não estou conseguindo executar os dois passos ao mesmo tempo. Alguem ja passou por isso?

Deu uma olhada no baeldung?

Olhei agora e pelo que entendi(ou não), antes de qualquer requisição ele seta um basic authentication no header.

No caso eu preciso fazer o login(json), esperar o retorno e depois executar outra requisicao(post form data).

Bota um exemplo do teu código ai mano, pra ver se consigo ajudar… a implementação padrão é síncrona, não estou entendendo tua dificuldade.

Segue codigo de exemplo:

	private Response login() {
		try {
			setRequestFactory(new HttpComponentsClientHttpRequestFactory(HttpClientBuilder.create().build()));
			defineHeaders().setContentType(MediaType.APPLICATION_JSON);
			response = post(api.concat(URI_LOGIN_ACCESS), 
					HttpMethod.POST, 
					new Request(user, pass),  
					Response.class);
		} catch (HttpClientErrorException | HttpServerErrorException e) {
			e.printStackTrace();
		}
		return (Response) response.getBody();
	}
public Response validate(Request request) {
		validateLogin(login());		
		defineHeaders().setContentType(MediaType.APPLICATION_FORM_URLENCODED);
		try {
				response = post(api.concat(URI_GET_BY_IP), 
							HttpMethod.POST, 
							generateMapParameter(request), 
							Response.class);
		} catch (HttpClientErrorException | HttpServerErrorException e) {
			e.printStackTrace();
		}
		return (Response) response.getBody();
	}

Tenho essa reescrita para setar o cookie da conexão

    @Override
    protected <T extends Object> T doExecute(URI url, HttpMethod method, final RequestCallback requestCallback, final ResponseExtractor<T> responseExtractor) throws RestClientException {
        final List<HttpCookie> cookies = getCoookies();

        return super.doExecute(url, method, new RequestCallback() {
            @Override
            public void doWithRequest(ClientHttpRequest chr) throws IOException {
                if (cookies != null) {
                    StringBuilder sb = new StringBuilder();
                    for (HttpCookie cookie : cookies) {
                        sb.append(cookie.getName()).append("=").append(cookie.getValue()).append(";");
                    }
                    chr.getHeaders().add("Cookie", sb.toString());
                }
                requestCallback.doWithRequest(chr);
            }

        }, new ResponseExtractor<T>() {
            @Override
            public T extractData(ClientHttpResponse chr) throws IOException {
                processHeaders(chr.getHeaders());
                return responseExtractor.extractData(chr);
            }
        });
    }