41

RestTemplate.postForObjectを使用してWebサービスに情報を投稿しています。結果の文字列に加えて、応答ヘッダーの情報が必要です。これを取得する方法はありますか?

RestTemplate template = new RestTemplate();
String result = template.postForObject(url, request, String.class);
4

4 に答える 4

68

わかりました、私はついにそれを理解しました。交換方法はまさに私が必要としているものです。完全なヘッダーを含むHttpEntityを返します。

RestTemplate template = new RestTemplate();
HttpEntity<String> response = template.exchange(url, HttpMethod.POST, request, String.class);

String resultString = response.getBody();
HttpHeaders headers = response.getHeaders();
于 2011-05-20T15:56:27.317 に答える
9

最善の方法は、executeメソッドを使用して、ヘッダーにアクセスできるResponseExtractorを渡すことです。

private static class StringFromHeadersExtractor implements ResponseExtractor<String> {

    public String extractData(ClientHttpResponse response) throws   
    {
        return doSomthingWithHeader(response.getHeaders());
    }
}

もう1つのオプション(クリーン度が低い)は、RestTemplateを拡張し、への呼び出しをオーバーライドして、doExecuteそこに特別なヘッダー処理ロジックを追加することです。

于 2011-05-15T02:35:07.923 に答える
3
  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();
于 2016-11-10T21:24:35.270 に答える
1

これが推奨される方法かどうかはわかりませんが、カスタムを使用するようにテンプレートを構成すると、応答ヘッダーから情報を抽出できるようですHttpMessageConverter

于 2011-05-15T02:00:22.260 に答える