当前位置: 首页 > 知识库问答 >
问题:

可以在请求中传递自定义对象,并在post中以“*/*”(Mediatype.all_value)的形式接收响应

慕永年
2023-03-14

我试图使用RESTTEMPLATE触发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"
}
@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";

}
//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);`

Edit2:我尝试添加messageConverter,如下所示:

List<HttpMessageConverter<?>> msgConverter = new ArrayList<HttpMessageConverter<?>>
MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();
converter.setSupportMediaType(Collections.singletonList(MediaType.ALL));
msgConverter.add(converter);
restTemplate.setMessageConverters(msgConverter);

但它仍然给出了同样的错误。我想知道我是否需要编写自定义消息转换器?有人能帮我明白我是否走在正确的道路上吗?

共有1个答案

邢洋
2023-03-14

retune类型应该是PayloadObject而不是String类型。

ResponseEntity<PayloadObject> out = restTemplate.exchange("url", HttpMethod.POST, entity
, PayloadObject.class);
 类似资料:
  • 我试图在我的POST请求中传递一个应用程序特定的头,但是我得到了错误-步骤头XXX-XXX没有一个匹配的胶水代码。 如何在请求中指定特定于我的应用程序的头。以下是我正在提交的示例请求:

  • 问题内容: 我正在尝试将自己的自定义对象传递到包中: 我得到错误: 问题答案: 一种方法是让您的自定义对象实现Parcelable接口并使用

  • 我正在尝试在Spring Boot中使用WebClient制作API POST Request。但是我无法以JSONObject的形式发出请求并接收响应。使用RestTemboard我做到了,最近我开始学习WebClient。所以我被卡住了。 错误Spring给出:错误:(48,28)java:不兼容的类型:不存在类型变量T的实例,因此reactor.core.publisher.Mono符合or

  • 有什么方法可以方便地将参数/查询作为映射传递 http.get只接受url和标头,不像python get中的有效负载字典可以用作参数。我想简单地实现它,比如: 或任何没有字符串操作的其他方法。 更新:我尝试使用构造函数。但这会带来错误。我需要通过的地图是 错误: 类型“int”不是类型“Iterable”的子类型 到目前为止,我只能通过将int 298改为字符串'298'来实现。

  • 问题内容: 在Flask中,需要从服务器端发出POST请求。 假设我们有: 我没有在Flask文档中找到任何特定的东西。有人说是问题所在,但我未能将Flask和。真的有可能吗? 提前致谢! 问题答案: 是的,要发出POST请求,您可以使用,请参阅文档。 但是,我建议改用requests模块。 编辑 : 我建议您重构代码以提取常用功能:

  • 我正在使用RestTemplate方法将请求发布到endpoint。我在不同的文件中有和,我想把它们传递给POST请求,除此之外,我还想把传递给endpoint。 我能够成功地传递头和请求,但不能传递包含凭据的Http实体 有没有办法让我三样东西都及格 > HttpHeader 要求 这是我的密码 以下代码位于NewHttpHeader中。包含和