【发布时间】:2021-12-17 03:29:24
【问题描述】:
我正在使用 Spring Boot(使用 Java)开发应用程序。 这个应用程序必须调用几个外部服务,每个服务需要一个复杂的主体(在 json 或 xml)(这个输入可以变化!我传递给它的字段不是必需的,所以有时我什至可能传递这些字段的子集)。以下是服务可以接收的输入示例:
{
"field1": "string",
"field2": "string",
"field3": "string",
"field4": 0,
}
<input>
<input1>my_string</input1>
<input2>my_string</input2>
</input>
我使用 RestTemplate 进行 HTTP 调用。这是一个例子。我使用 Java 字符串对 HTTP 正文进行建模(但它有一个很大的缺陷,即 它不可编辑而是硬编码!):
String Jsonbody = "{\r\n"
+ " \"field1\": \""+myString1+"\"\r\n"
+ " \"field2\": \""+myString2+"\"\r\n"
+ "}";
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
HttpEntity<String> request = new HttpEntity<String>(Jsonbody, headers);
RestTemplate restTemplate = new RestTemplate();
ResponseEntity<MyResponseClass> response = restTemplate.postForEntity(url, request, MyResponseClass.class);
在JsonBody 变量中这样硬编码正文是非常糟糕的。有什么方法可以让我动态插入字符串并自动创建 JSON 对象(然后我可以将其转换为字符串以放入 .postForEntity 方法中)? XML 输入类型也有同样的问题。
【问题讨论】:
标签: java json spring spring-boot http