import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
import org.springframework.http.HttpHeaders;
import org.springframework.util.MultiValueMap;
public class HttpHeadersToMultiValueMapConverter {
public static MultiValueMap<String, String> convert(HttpHeaders headers) {
MultiValueMap<String, String> multiValueMap = new LinkedMultiValueMap();
headers.forEach((key, values) -> {
multiValueMap.put(key, values);
});
return multiValueMap;
}
public static void main(String[] args) {
HttpHeaders headers = new HttpHeaders();
// java.nio.charset.StandardCharsets は、US-ASCII、ISO-8859-1、UTF-8、UTF-16BE、UTF-16LE、UTF-16のみでWindow-31jとかMS932は無い
// 文字コードの指定はCharset.forName()
//headers.setContentType(new MediaType(MediaType.APPLICATION_JSON, StandardCharsets.UTF_8));
//headers.setContentType(new MediaType(MediaType.APPLICATION_JSON, Charset.forName("UTF-8")));
// MS932と設定した後の値をみるとcharasetはwindows-31jになります
headers.setContentType(new MediaType(MediaType.APPLICATION_JSON, Charset.forName("MS932")));
// headers.setContentType(new MediaType(MediaType.APPLICATION_JSON, Charset.forName("Windows-31j"))); // windows-31j
MultiValueMap<String, String> convertedHeaders = convert(headers);
System.out.println("Converted MultiValueMap:");
System.out.println(convertedHeaders);
}
}
出力
MS932と指定。charsetはwindows-31jとなる。
Converted MultiValueMap:
[Content-Type:"application/json;charset=windows-31j"]