gpt4 book ai didi

java - HTTP 响应无法获取响应正文

转载 作者:行者123 更新时间:2023-12-01 16:41:25 24 4
gpt4 key购买 nike

当我使用 REST 发送 application/json 请求时,它返回:

Trace-ID=[] - Response {
"url" : null,
"httpMethod" : null,
"headers" : {
"Cache-Control" : [ "no-cache" ],
"Pragma" : [ "no-cache" ],
"Content-Type" : [ "application/json; charset=utf-8" ],
},
"body" : {
"AccNum" : "123456789",
"AccName" : "xxxxxx",
"ResponseCode" : "000",
},
"status" : 200
}
String: "{
"url" : null,
"httpMethod" : null,
"headers" : {
"Cache-Control" : [ "no-cache" ],
"Pragma" : [ "no-cache" ],
"Content-Type" : [ "application/json; charset=utf-8" ],
},
"body" : {
"AccNum" : "123456789",
"AccName" : "xxxxxx",
"ResponseCode" : "000",
},
"status" : 200
}"

问题是我不能只返回正文,但我得到了整个响应,我如何只返回正文。当我调用 .getBody 时,它仍然不返回正文,但返回整个响应,以及如何将响应正文映射到我的 CustomerResponse 类。

我用于发送请求和接收响应的代码:

public CustomerResponse getDetails(String accNum){

HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
Map<String, Object> map = new HashMap<>();

map.put("AccSid", "123456789");
map.put("CustAcc", accNum);
HttpEntity<Map<String, Object>> request = new HttpEntity<>(map,
headers);

try {
ResponseEntity<CustomerResponse> response =
restTemplate.postForEntity(url, request,
CustomerResponse.class);
return response.getBody()

} catch (Exception ex) {
if (ex instanceof HttpClientErrorException) {
if (((HttpClientErrorException) ex).getStatusCode() == HttpStatus.NOT_FOUND) {
return null;
}
}
log.error("Error occurred while sending request for account ID {}.", accNum,
ex);
throw ex;
}
}

最佳答案

问题是:

response.getBody() 实际上返回您收到的完整 JSON 响应,而不是您想要访问和返回的“body”JSON 对象。

现在,从您的代码来看,响应的类型似乎是“CustomerResponse”。因此,我假设“CustomerResponse”有一个实例或静态变量“body”,可以通过 getter 方法“getBody()”访问它。

最后你可以尝试一下,response.getBody().getBody()。

如果这不能解决您的问题,请共享“CustomerResponse”类的代码。

关于java - HTTP 响应无法获取响应正文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61854531/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com