使用RestTemplate进行重定向的问题

时间:2017-09-06 01:13:39

标签: spring rest redirect resttemplate

概述:

以下代码负责调用外部REST服务。外部服务重定向到页面。

restTemplate.exchange(
                "http://localhost:8080/<endpoint address>",
                GET,
                new HttpEntity<String>(headers),
                String.class);

问题:

响应回复为纯HTML文本,这是错误的。 预期的一个是重定向到外部服务已被重定向到的页面。

*有没有办法解决这个问题?

1 个答案:

答案 0 :(得分:0)

我使用 HttpURLConnection 代替 RestTemplate 找到了解决方案:

HttpURLConnection con = getHttpURLConnection();

    try {
        con.setInstanceFollowRedirects(true);
        con.setRequestProperty(requestHeaderName, requestHeaderValue);
        HttpURLConnection.setFollowRedirects(true);
        con.getResponseCode();

        verifyResponseCode(con);

        String redirectPath = con.getURL().toString();
        return new RedirectView(redirectPath);

    } catch (RestClientException e) {
        log.error(e.getMessage(), e);
        throw e;
    } 

在getHttpURLConnection中:

HttpURLConnection getHttpURLConnection() throws Exception {
    URL securedUrl = new URL("URL");
    return (HttpURLConnection) securedUrl.openConnection();
}

现在它对我有用。 con.getURL()从外部服务返回重定向的URL,现在我可以访问它。