-1

I am trying to make a get request to server via HttpClient and I am getting Unrecognized field my code below;

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;

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;
Vishal Vasani
  • 647
  • 8
  • 16

1 Answers1

1

Looks like RequestParam annotation inheirtance was not available till Spring MVC 5.1.0.BUILD-SNAPSHOT (see link below). So, if possible, upgrade Spring version, otherwise put RequestParam annotation on implementation class

Checkout this question: Spring @RequestParam and controller interface

Roman
  • 181
  • 7