[英]Unrecognized field error with Http Client
I am trying to make a get request to server via HttpClient and I am getting Unrecognized field my code below;我正在尝试通过 HttpClient 向服务器发出获取请求,并且我在下面的代码中得到了 Unrecognized 字段;
My Controller我的控制器
public interface ReadCaseByCaseNumberController {
@GetMapping("/case")
ResponseEntity<ReadCaseByCaseNumberResponse> getReadCaseByCaseNumberResponse(@RequestParam("caseNumbers") String caseNumbers) throws IOException, URISyntaxException;
}
My Controller Impl我的控制器实现
@Override
public ResponseEntity<ReadCaseByCaseNumberResponse> getReadCaseByCaseNumberResponse(String caseNumbers) throws IOException, URISyntaxException {
return ResponseEntity.ok(readCaseByCaseNumberService.getReadCaseByCaseNumberResponse(caseNumbers));
}
My Service我的服务
ReadCaseByCaseNumberResponse getReadCaseByCaseNumberResponse(String caseNumbers) throws IOException, URISyntaxException; ReadCaseByCaseNumberResponse getReadCaseByCaseNumberResponse(String caseNumbers) 抛出 IOException,URISyntaxException;
My Service Impl我的服务实现
@Value("${servce.urlBasePath}")
private String urlBasePath;
@Value("${service.getCaseByCaseNumberPath}")
private String getMessageByCaseNumberURL;
public ReadCaseByCaseNumberResponse getReadCaseByCaseNumberResponse(String caseNumbers) throws IOException, URISyntaxException {
CloseableHttpClient client = HttpClients.createDefault();
URIBuilder builder = new URIBuilder();
builder.setHost(urlBasePath);
builder.setPath(getMessageByCaseNumberURL);
builder.setScheme("https");
builder.setParameter("caseNumbers", caseNumbers);
HttpGet httpGet = new HttpGet(builder.build());
httpGet.setHeader(Constant.API_KEY, Constant.API_KEY_VALUE);
httpGet.setHeader(Constant.AUTHORIZATION_KEY, Constant.AUTHORIZATION_VALUE);
httpGet.setHeader(Constant.CONTENT_TYPE, Constant.CONTENT_TYPE_VALUE);
CloseableHttpResponse response = client.execute(httpGet);
ObjectMapper mapper = new ObjectMapper();
ReadCaseByCaseNumberResponse readCaseByCaseNumberResponse = mapper.readValue(EntityUtils.toString(response.getEntity()), ReadCaseByCaseNumberResponse.class);
client.close();
return readCaseByCaseNumberResponse;
my Response class below;我在下面的响应类;
@Data
public class ReadCaseByCaseNumberResponse {
private String id;
private Integer caseNumber;
private String subject;
private String description;
private Integer version;
private String status;
private String priority;
Looks like RequestParam annotation inheirtance was not available till Spring MVC 5.1.0.BUILD-SNAPSHOT (see link below).看起来 RequestParam 注释继承在 Spring MVC 5.1.0.BUILD-SNAPSHOT 之前不可用(请参见下面的链接)。 So, if possible, upgrade Spring version, otherwise put RequestParam annotation on implementation class因此,如果可能,升级 Spring 版本,否则将 RequestParam 注释放在实现类上
Checkout this question: Spring @RequestParam and controller interface检查这个问题: Spring @RequestParam and controller interface
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.