RestTemplate.postForObjectを使用してWebサービスに情報を投稿しています。結果文字列に加えて、応答ヘッダーの情報が必要です。これを取得する方法はありますか?
RestTemplate template = new RestTemplate();
String result = template.postForObject(url, request, String.class);
さて、私はついにそれを理解しました。交換方法はまさに私が必要とするものです。完全なヘッダーを含むHttpEntityを返します。
RestTemplate template = new RestTemplate();
HttpEntity<String> response = template.exchange(url, HttpMethod.POST, request, String.class);
String resultString = response.getBody();
HttpHeaders headers = response.getHeaders();
execute メソッドを使用し、ヘッダーにアクセスできる ResponseExtractor を渡すことをお勧めします。
private static class StringFromHeadersExtractor implements ResponseExtractor<String> {
public String extractData(ClientHttpResponse response) throws
{
return doSomthingWithHeader(response.getHeaders());
}
}
別のオプション(あまりクリーンではない)は、RestTemplateを拡張し、doExecute
への呼び出しをオーバーライドし、そこに特別なヘッダー処理ロジックを追加することです。
これが推奨される方法であるかどうかはわかりませんが、カスタム HttpMessageConverter
を使用するようにテンプレートを構成すると、応答ヘッダーから情報を抽出できるように見えます。
HttpEntity<?> entity = new HttpEntity<>( postObject, headers ); // for request
HttpEntity<String> response = template.exchange(url, HttpMethod.POST, entity, String.class);
String result= response.getBody();
HttpHeaders headers = response.getHeaders();