簡體   English   中英

來自 RestTemplate 的 API 的響應需要傳遞給請求正文中的另一個。 但它因 400 錯誤而失敗

[英]Response from a API from RestTemplate needs to be passed to another in the request body. But it is failing with 400 error

我正在嘗試使用 RestTemplate 將一個可能包含 \n 或引號(“)的 API 的響應傳遞給另一個 API。

但它總是因 400 錯誤而失敗。 我猜帖子正文由於換行符和引號而損壞。

你能建議如何使它工作嗎?

這是我得到的例外,我的請求正文如下所示:

{"to":"test@test.com","replyTo":"test@test.com","body":"call\n"}

Request URL: http://localhost:8080/endpoint/test, action: POST, status: 400
org.springframework.web.client.HttpClientErrorException: 400 null
    at org.springframework.web.client.DefaultResponseErrorHandler.handleError(DefaultResponseErrorHandler.java:94)
    at org.springframework.web.client.DefaultResponseErrorHandler.handleError(DefaultResponseErrorHandler.java:79)
    at org.springframework.web.client.ResponseErrorHandler.handleError(ResponseErrorHandler.java:63)
    at org.springframework.web.client.RestTemplate.handleResponse(RestTemplate.java:775)
    at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:728)
    at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:702)
    at org.springframework.web.client.RestTemplate.exchange(RestTemplate.j

您需要像這樣創建 model:

class MyModel {
  String to;
  String replyTo;
  String body;
  //getters and setters......
}

像這樣將字符串編組到 object 中:


String requestBody="";//{"to":"test@test.com","replyTo":"test@test.com","body":"call\n"}
MyModel myModel=new ObjectMapper().readValue(requestBody, MyModel);

現在您有了 object,從 body 屬性中刪除換行符。 像這樣:

String s=myModel.getBody().replace('\n', ' ');//you can choose to replace "\n" with whatever you want
myModel.setBody(s);

之后,您可以像這樣反序列化 object:

requestBody=new ObjectMapper().writeValueAsString(myModel);

發送requestBody

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM