2016-11-04 5 views
2

私はスプリングフレームワークレストテンプレート を使用してバイト配列をフェッチしていますが、このバイトのメディアタイプもフェッチする必要があります。バイトのための春のRESTテンプレート

このbytearrayのmediaTypeはどんなタイプでもかまいません。

バイトのフェッチに現在使用されているコードは次のとおりです。

HttpHeaders headers = new HttpHeaders(); 
    headers.setAccept(Collections.singletonList(MediaType.valueOf("application/pdf"))); 
    ResponseEntity<byte[]> result = restTemp.exchange(url, HttpMethod.GET, entity, byte[].class,documentId); 

上記のコードは、pdfコンテンツタイプのみを取得します。

もう一方のサービスがbyteArrayに任意のMediaTypeを提供しているため、一般的なMediaTypeを受け入れるようにcontentTypeを設定する方法。

誰かがMediaTypeを取得できる方法をお勧めしますか?例えば、ResponseEntity.getHeaders() -

任意の提案は歓迎されている。..

答えて

0

あなたはHTTPヘッダと、使用中のメディアタイプを格納することができます。バイト配列とメディアタイプをホルダークラスにラップすることもできます。

+0

おかげcontent-typeを抽出します。はい、これは私にMediaTypeを与えますが、acceptHeaderで設定されたものだけです。しかし、bytearrayはpdfやjpgやpngやtxtファイルのようなものです。 – Trin

0

MediaType mediaType = result.getHeaders()。getContentType();

+0

こんにちはAndy、ありがとうございました。はい、これは私にMediaTypeを与えますが、acceptHeaderで設定されたものだけです。しかし、bytearrayはpdfやjpgやpngやtxtファイルのようなものです。 – Trin

+0

これはacceptヘッダーに設定されたものではなく、それは応答を作成します。サーバーが、バイト配列が表すものに基づいてMediaTypeを設定する場合(たとえば、pdfファイルの場合はapplication/pdf)、Content-Typeヘッダーをそのまま使用できます。 –

0

は、あなただけのcontent-typeことを返すようにサーバーを強制しないようにacceptヘッダを送信しないhere

1

を見て、MediaTypeapplication/octet-streamように設定することができます。これは、この後*/*

//HttpHeaders headers = new HttpHeaders(); 
//headers.setAccept(Collections.singletonList(MediaType.WILDCARD)); 
ResponseEntity<byte[]> result = restTemp.exchange(url, HttpMethod.GET, entity, byte[].class,documentId); 

ワイルドカードを送ることと同じであり、応答のヘッダからの応答を

byte body[] = result.getBody(); 
MediaType contentType = result.getHeaders().getContentType(); 
関連する問題