Настройка файлов cookie безопасности с помощью RestTemplate
Я пытаюсь вызвать службу Restful JSON, используя конвертер RestTemplate и Jackson json. Теперь, чтобы позвонить в службу, мне нужно передать файл cookie безопасности. Я могу достичь этого, используя URLConnection (см. код ниже)
URL url= new URL("https://XXXXXXXX");
URLConnection yc = url.openConnection();
yc.setRequestProperty("SecurityCookie", ssocookie.getValue());</code>
какова параллель для этого в RestTemplate? Вот фрагмент кода, который я использовал для вызова службы Restful с помощью RestTemplate:
RestTemplate rest = new RestTemplate();
InputBean input = new InputBean();
input.setResource("SampleResource");
HttpEntity<InputBean > entity = new HttpEntity<InputBean>(input);
ResponseEntity<OutputBean> response1 = rest.postForEntity(
"https://XXXXXXXXX",
entity, OutputBean.class);</code>
Я не могу понять, как передать файл cookie безопасности при использовании RestTemplate для вызова службы. Любая помощь в этом будет отличной.
3 ответов
вы можете получить доступ к базовому HttpURLConnection
используется RestTemplate
проводкой ваш RestTemplate
с пользовательским ClientHttpRequestFactory
, что позволяет получить доступ к базовому соединению для установки заголовков, свойств и т. д. The ClientHttpRequestFactory
используется RestTemplate
при создании новых подключений.
в частности, вы можете продлить SimpleClientHttpRequestFactory
реализация и переопределить prepareConnection()
способ:
public class YourClientHttpRequestFactory extends SimpleClientHttpRequestFactory {
@Override
protected void prepareConnection(HttpURLConnection connection, String httpMethod) {
connection.setRequestProperty("SecurityCookie", ssocookie.getValue());
}
}
Я написал сообщение в блоге, в котором объясняется, как это сделать, используя заголовки запросов:
http://springinpractice.com/2012/04/08/sending-cookies-with-resttemplate/
вот код:
HttpHeaders requestHeaders = new HttpHeaders();
requestHeaders.add("Cookie", "JSESSIONID=" + session.getValue());
HttpEntity requestEntity = new HttpEntity(null, requestHeaders);
ResponseEntity rssResponse = restTemplate.exchange(
"https://jira.example.com/sr/jira.issueviews:searchrequest-xml/18107/SearchRequest-18107.xml?tempMax=1000",
HttpMethod.GET,
requestEntity,
Rss.class);
Rss rss = rssResponse.getBody();