簡體   English   中英

使用springboot RestTemplate調用外部API,拋出異常

[英]Calling external API using springboot RestTemplate, throwing exception

我正在嘗試使用 Springboot Resttemplate 消耗 REST API。 這在本地系統上測試時工作正常,我可以使用數據。 但是當我在 Heroku 上部署相同的服務時,它會拋出異常。 我無法弄清楚它有什么問題。 我是 Heroku 環境的新手。 如果我遺漏任何東西,請幫忙

代碼:

@Bean
    public RestTemplate restTemplate() {
        CloseableHttpClient httpClient = HttpClients.custom().setSSLHostnameVerifier(NoopHostnameVerifier.INSTANCE)
                .build();
        HttpComponentsClientHttpRequestFactory requestFactory = new HttpComponentsClientHttpRequestFactory();
        requestFactory.setHttpClient(httpClient);
        return new RestTemplate(requestFactory);
    }

public void checkAvailability(VaccineRequest vaccineRequest) {
        String url = findByPinUrl.replace("#pin#", vaccineRequest.getPinCode()).replace("#date#", vaccineRequest.getDate());

        log.info("API-SETU-URL - {}", url);

        HttpHeaders headers = new HttpHeaders();
        headers.setAccept(Arrays.asList(MediaType.APPLICATION_JSON));
        headers.add("user-agent","Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36");
        HttpEntity<String> entity = new HttpEntity<>("parameters", headers);

        ResponseEntity<Response> responseObj = null;

        try {
            responseObj = restTemplate.exchange(url, HttpMethod.GET, entity, Response.class);
        } catch (RestClientException e) {
            log.info("Exception while invoking apisetu url : {}", e);
        }


        log.info("Response : {}", responseObj);
}

堆棧跟蹤:

2021-05-05T12:33:27.288037+00:00 app[web.1]: 2021-05-05 12:33:27.285  INFO 4 --- [io-10945-exec-3] c.c.vaccine.controller.PrimeController   : incoming data - VaccineRequest(name=Test, emailId=test@ail.com, mobileNo=9123456789, pinCode=321605, date=06-05-2021)
2021-05-05T12:33:27.299811+00:00 app[web.1]: 2021-05-05 12:33:27.299  INFO 4 --- [io-10945-exec-3] c.c.vaccine.service.VaccineCheckerImpl   : API-SETU-URL - **https://cdn-api.co-vin.in/api/v2/appointment/sessions/public/findByPin?pincode=321605&date=06-05-2021**
2021-05-05T12:33:29.082346+00:00 app[web.1]: 2021-05-05 12:33:29.081  INFO 4 --- [io-10945-exec-3] c.c.vaccine.service.VaccineCheckerImpl   : Exception while invoking apisetu url : {}
2021-05-05T12:33:29.082365+00:00 app[web.1]: 
2021-05-05T12:33:29.082370+00:00 app[web.1]: **org.springframework.web.client.HttpClientErrorException$Forbidden: 403 Forbidden: [<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
2021-05-05T12:33:29.082371+00:00 app[web.1]: <HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">**
2021-05-05T12:33:29.082372+00:00 app[web.1]: <TITLE>ERROR... (919 bytes)]
2021-05-05T12:33:29.082372+00:00 app[web.1]:    at org.springframework.web.client.HttpClientErrorException.create(HttpClientErrorException.java:109) ~[spring-web-5.3.6.jar!/:5.3.6]
2021-05-05T12:33:29.082373+00:00 app[web.1]:    at org.springframework.web.client.DefaultResponseErrorHandler.handleError(DefaultResponseErrorHandler.java:186) ~[spring-web-5.3.6.jar!/:5.3.6]
2021-05-05T12:33:29.082373+00:00 app[web.1]:    at org.springframework.web.client.DefaultResponseErrorHandler.handleError(DefaultResponseErrorHandler.java:125) ~[spring-web-5.3.6.jar!/:5.3.6]
2021-05-05T12:33:29.082374+00:00 app[web.1]:    at org.springframework.web.client.ResponseErrorHandler.handleError(ResponseErrorHandler.java:63) ~[spring-web-5.3.6.jar!/:5.3.6]
2021-05-05T12:33:29.082377+00:00 app[web.1]:    at org.springframework.web.client.RestTemplate.handleResponse(RestTemplate.java:819) ~[spring-web-5.3.6.jar!/:5.3.6]
2021-05-05T12:33:29.082377+00:00 app[web.1]:    at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:777) ~[spring-web-5.3.6.jar!/:5.3.6]
2021-05-05T12:33:29.082378+00:00 app[web.1]:    at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:711) ~[spring-web-5.3.6.jar!/:5.3.6]
2021-05-05T12:33:29.082378+00:00 app[web.1]:    at org.springframework.web.client.RestTemplate.exchange(RestTemplate.java:602) ~[spring-web-5.3.6.jar!/:5.3.6]
2021-05-05T12:33:29.082379+00:00 app[web.1]:    at com.covid19.vaccine.service.VaccineCheckerImpl.checkAvailability(VaccineCheckerImpl.java:70) 

禁止,因為服務器不允許您的請求。 API 僅限於非印度 IP 地址。 這是最可能的原因,因為您的 heroku 部署可能超出了印度 IP 范圍。

暫無
暫無

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

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