spring-boot - 可以在请求中传递自定义对象并在帖子中接收响应为“*/*”(Mediatype.ALL_VALUE)
问题描述
我正在尝试使用restTemplate.Request 触发restApi。Request 接受json(我为此创建了一个自定义对象)并将响应作为“ / ” mediaType 发送。
预期要求:
{
"domainObject" :{
"amount" : "1230798F",
"business" : "n/a",
"productGroup" : "n/a",
"productType" : "n/a",
"balanceType" : "n/a",
"balanceSubType" : "n/a"
},
"uniqueId" : "test1",
"userId" : "user1"
}
我的 DTO:
@Entity
@AllArgsConstructor
class DomainObject(){
private Float amount;
private String business;
private String productGroup;
private String productType;
private String balanceType;
private String balanceSubType;
}
@Entity
@AllArgsConstructor
class PayloadObject(){
@Autowired
private DomainObject domainObject;
private String uniqueId;
private String userId;
}
public void testRestTemplate(){
PayloadObject obj = new PayloadObject(domainObject, "test-1", "abc");
RestTemplate restTemplate = new RestTemplate();
String url = "https://dev-test";
}
您能否指导我如何在这种情况下使用 restTemplate,任何帮助将不胜感激。
Edit1:当我尝试使用以下代码时:
//make the object
NewObject obj = new NewObject();
obj.setStuff("stuff");
//set your headers
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
//set your entity to send
HttpEntity entity = new HttpEntity(obj,headers);
// send it!
ResponseEntity<String> out = restTemplate.exchange("url", HttpMethod.POST, entity
, String.class);`
它抛出一个错误,说“对象和内容类型“应用程序/json”没有 HttpMessageConverter
Edit2:我尝试添加 messageConverter 如下:
List<HttpMessageConverter<?>> msgConverter = new ArrayList<HttpMessageConverter<?>>
MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();
converter.setSupportMediaType(Collections.singletonList(MediaType.ALL));
msgConverter.add(converter);
restTemplate.setMessageConverters(msgConverter);
但它仍然给出了同样的错误。我想知道我是否需要编写自定义消息转换器?有人可以帮助我了解我是否走在正确的道路上。
解决方案
重调类型应该是 PayloadObject 而不是 String 类型。
ResponseEntity<PayloadObject> out = restTemplate.exchange("url", HttpMethod.POST, entity
, PayloadObject.class);
推荐阅读
- r - 如何在 table1 包中显示具有不相等组大小的 ANOVA 的 p 值?
- c++ - 编写自己的可执行格式GCC?
- javascript - 如何从托管在 Firebase 上的网页写入 Firebase 数据库
- facebook - Facebook 长寿命页面令牌过期
- angular - Github Actions 为 Angular 项目部署了一个空白的 Firebase 页面
- c++ - 如何从 cin 获得可变数量的输入?
- python - 安装软件包时 pip 在我的 venv 之外寻找,并从我的 Requirements.txt 文件中安装了错误的版本
- sql - 仅插入表中不同的行?
- android-studio - 停止 Android Studio 4.1.3 的截断字符串插值
- javascript - 从节点js中的服务器读取excel文件的内容