Spring RestTemplate を使用して生の JSON を REST API に渡すことは可能ですか?
私は次のことを試みています:
List<HttpMessageConverter<?>> httpMessageConverters = new ArrayList<HttpMessageConverter<?>>();
httpMessageConverters.add(new MappingJacksonHttpMessageConverter());
restTemplate.setMessageConverters(httpMessageConverters);
String jsonText = // raw JSON
httpHeaders.setContentType(MediaType.APPLICATION_JSON);
HttpEntity<?> entity = new HttpEntity<Object>(jsonText, httpHeaders);
restTemplate.exchange(url, HttpMethod.POST, entity, responseClass);
このリクエストを呼び出すと、不正なリクエストを意味する HTTP 400 エラー レスポンスが返されます。ただし、すべてのヘッダーと JSON 本文は、私が持っている HTTP クライアントを使用して送信されたものと同じです。
対照的に、MyRequest オブジェクトを作成して HttpEntity に設定すると、次のようにうまく動作します。
List<HttpMessageConverter<?>> httpMessageConverters = new ArrayList<HttpMessageConverter<?>>();
httpMessageConverters.add(new MappingJacksonHttpMessageConverter());
restTemplate.setMessageConverters(httpMessageConverters);
MyRequest myRequest = new MyRequest();
httpHeaders.setContentType(MediaType.APPLICATION_JSON);
HttpEntity<?> entity = new HttpEntity<Object>(myRequest, httpHeaders);
restTemplate.exchange(url, HttpMethod.POST, entity, responseClass);
したがって、生の JSON を文字列形式で使用して REST API を呼び出すにはどうすればよいのでしょうか?