1

我正在使用 Spring 的 RestTemplate 发送/接收 http 请求。我正在使用 Spring HttpEntity 创建 http 请求。我使用 HttpConverters 来序列化 http 请求中的应用程序对象,反之亦然。根据Spring docs,有 4 个默认转换器:

  • ByteArrayHttpMessageConverter,
  • StringHttpMessageConverter,
  • FormHttpMessageConverter,
  • SourceHttpMessage 转换器。

FormHttpMessageConverter用来序列化字符串中的几个属性值对,以便可以使用RestTemplate. 但是,FormHttpMessageConverter要求 http 请求参数值为 a MultiValueMap,因此,我需要为每个属性值对执行此操作:

final HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
final MultiValueMap<String, String> postParams = new LinkedMultiValueMap<String, String>();

String attrib1[] = new String[]{"value1"};
postParams.put("attrib1", Arrays.asList(attrib1));

我想使用一个更简单的方法HttpMessageConverter,它可以为每个参数接受一个简单的地图。就像是:

final HashMap<String, String> postParams = new HashMap<String, String>();
postParams.put("exclusiveOnly", "value1");

我知道前一种形式更通用,但我认为后者对很多应用程序都很有用,所以我想知道为什么它不是HttpConverterSpring 中的默认值。无论如何,你能给我提示或点链接如何创建一个自定义HttpConverter来实现我想要的吗?

4

0 回答 0