9

RestTemplate と Jackson json コンバーターを使用して、Restful JSON サービスを呼び出そうとしています。サービスを呼び出すには、セキュリティ Cookie を渡す必要があります。URLConnection を使用してこれを実現できます (以下のコードを参照)。

URL url= new URL("https://XXXXXXXX");

URLConnection yc = url.openConnection();
yc.setRequestProperty("SecurityCookie", ssocookie.getValue());</code>

RestTemplate でのこれとの類似点は何ですか? 以下は、RestTemplate を使用して Restful サービスを呼び出すために使用したコード スニペットです。

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>

RestTemplate を使用してサービスを呼び出すときに、セキュリティ Cookie を渡す方法がわかりません。これに関するヘルプは素晴らしいでしょう。

4

3 に答える 3

36

リクエスト ヘッダーを使用してこれを行う方法を説明するブログ投稿を書きました。

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();
于 2012-04-09T21:57:15.733 に答える
4

カスタムを使用して配線することで、 によってHttpURLConnection使用される基礎にアクセスできます。これにより、基礎となる接続にアクセスして、ヘッダー、プロパティなどを設定できます。は、新しい接続を作成するときにによって使用されます。RestTemplateRestTemplateClientHttpRequestFactoryClientHttpRequestFactoryRestTemplate

特に、実装を拡張してメソッドSimpleClientHttpRequestFactoryをオーバーライドできます。prepareConnection()

public class YourClientHttpRequestFactory extends SimpleClientHttpRequestFactory {
  @Override
   protected void prepareConnection(HttpURLConnection connection, String httpMethod) {
     connection.setRequestProperty("SecurityCookie", ssocookie.getValue());
   }
}
于 2011-04-27T03:02:58.293 に答える