2020-12-29

@Component
public class RESTClient {

    public static final Logger logger = LoggerFactory.getLogger(RESTClient.class);


    private RestTemplate restTemplate;

    @Autowired
    @Qualifier("yodleeRestTemplate")
    public void setRestTemplate(RestTemplate restTemplate) {
        this.restTemplate = restTemplate;
    }

    public JSONObject doPost(String url, String requestBody) {
        final String fn = "[doPost]";
        logger.debug("{}, -------------------POST request start----------------------",fn);
        String mn = "POST( " + url + ", " + requestBody+" )";
        logger.debug("{}, HTTP" + " :: " + mn,fn);

        HttpHeaders headers = new HttpHeaders();
        headers.setContentType(MediaType.APPLICATION_JSON);
        HttpEntity<String> entity = new HttpEntity<>(requestBody, headers);
        ResponseEntity<String> responseEntity = null;
        try {
            responseEntity = restTemplate.postForEntity(url, entity, String.class);
        } catch (Exception e) {
            handleHttpClientException(e);
            throw new RestTemplateInvocationException(e);
        }

        logger.debug("{}, Response code is :" + responseEntity.getStatusCodeValue(),fn);
        logger.debug("{}, HTTP" + " :: Response " + " : "+ responseEntity.getBody(),fn);
        logger.debug("{}, -------------------POST request end----------------------",fn);
        try {
            return JSONObject.parseObject(responseEntity.getBody());
        } catch (Exception e) {
            throw new ParseJsonException(e);
        }
    }

    public JSONObject doPost(String url, String sessionTokenStr, String requestBody, boolean isEncodingNeeded) {
        final String fn = "[doPost]";
        logger.info("{}, -------------------POST request start----------------------",fn);

        String mn = "POST( " + url + ", " + requestBody+ " )";
        logger.debug("{}, HTTP" + " :: " + mn,fn);

        HttpHeaders headers = new HttpHeaders();
        if (isEncodingNeeded) {
            headers.setContentType(MediaType.APPLICATION_JSON);
        } else {
            headers.setContentType(MediaType.TEXT_PLAIN);
        }
        headers.set("Authorization", sessionTokenStr);

        HttpEntity<String> entity = new HttpEntity<>(requestBody, headers);
        ResponseEntity<String> responseEntity = null;
        try {

            responseEntity = restTemplate.postForEntity(url, entity, String.class);
        } catch (Exception e) {
            handleHttpClientException(e);
            throw new RestTemplateInvocationException(e);
        }

        logger.debug("{}, Response code is :" + responseEntity.getStatusCodeValue(),fn);
        logger.debug("{}, HTTP" + " :: Response " + " : "+ responseEntity.getBody(),fn);
        logger.debug("{}, -------------------POST request end----------------------",fn);
        try {
            return JSONObject.parseObject(responseEntity.getBody());
        } catch (Exception e) {
            throw new ParseJsonException(e);
        }
    }

    private void handleHttpClientException(Exception e) {
        if (e instanceof HttpClientErrorException) {
            String responseBodyAsString = ((HttpClientErrorException) e).getResponseBodyAsString();

            if (StringUtils.isNotBlank(responseBodyAsString)) {
                JSONObject jsonObject = JSONObject.parseObject(responseBodyAsString);
                if (jsonObject != null) {
                    String errorCode = (String) jsonObject.get("errorCode");
                    String errorMessage = (String) jsonObject.get("errorMessage");
                    logger.error("[handleHttpClientException], "+errorCode +" "+ errorMessage);
                }
            }
        }
    }

    public JSONObject doPost(String url, String sessionTokenStr, String requestBody, Map<String, ?> uriVariables, boolean isEncodingNeeded) {
        final String fn = "[doPost]";
        logger.info("{}, -------------------POST request start----------------------",fn);

        String mn = "POST( " + url + ", " + requestBody+ " )";
        logger.debug("{}, HTTP" + " :: " + mn,fn);

        HttpHeaders headers = new HttpHeaders();
        if (isEncodingNeeded) {

            headers.setContentType(MediaType.APPLICATION_JSON);
        } else {
            headers.setContentType(MediaType.TEXT_PLAIN);
        }
        headers.set("Authorization", sessionTokenStr);

        HttpEntity<String> entity = new HttpEntity<>(requestBody, headers);
        ResponseEntity<String> responseEntity = null;
        try {
            responseEntity = restTemplate.postForEntity(url, entity, String.class, uriVariables);
        } catch (Exception e) {
            handleHttpClientException(e);
            throw new RestTemplateInvocationException(e);
        }

        logger.debug("{}, Response code is :" + responseEntity.getStatusCodeValue(),fn);
        logger.debug("{}, HTTP" + " :: Response " + " : "+ responseEntity.getBody(),fn);
        logger.debug("{}, -------------------POST request end----------------------",fn);
        try {
            return JSONObject.parseObject(responseEntity.getBody());
        } catch (Exception e) {
            throw new ParseJsonException(e);
        }
    }

    public JSONObject doPut(String url, String sessionTokenStr, String requestBody, boolean isEncodingNeeded) {
        final String fn = "[doPut]";
        logger.info("{}, -------------------PUT request start----------------------",fn);

        String mn = "PUT( " + url + ", " + requestBody+ " )";
        logger.info("{}, HTTP" + " :: " + mn,fn);
        HttpHeaders headers = new HttpHeaders();
        if (isEncodingNeeded) {

            headers.setContentType(MediaType.APPLICATION_JSON);
        } else {
            headers.setContentType(MediaType.TEXT_PLAIN);
        }
        headers.set("Authorization", sessionTokenStr);

        HttpEntity<String> entity = new HttpEntity<>(requestBody, headers);
        ResponseEntity<String> responseEntity = null;
        try {
            responseEntity = restTemplate.exchange(url, HttpMethod.PUT, entity, String.class);
        } catch (Exception e) {
            handleHttpClientException(e);
            throw new RestTemplateInvocationException(e);
        }

        logger.info("{}, Response code is :" + responseEntity.getStatusCodeValue(),fn);
        logger.info("{}, HTTP" + " :: Response " + " : "+ responseEntity.getBody(),fn);
        logger.info("{}, -------------------POST request end----------------------",fn);
        try {
            return JSONObject.parseObject(responseEntity.getBody());
        } catch (Exception e) {
            throw new ParseJsonException(e);
        }
    }

    public JSONObject doPut(String url, String sessionTokenStr, String requestBody, Map<String, ?> uriVariables, boolean isEncodingNeeded) {
        final String fn = "[doPut]";
        logger.info("{}, -------------------PUT request start----------------------",fn);

        String mn = "PUT( " + url + ", " + requestBody+ " )";
        logger.info("{}, HTTP" + " :: " + mn,fn);
        HttpHeaders headers = new HttpHeaders();
        if (isEncodingNeeded) {

            headers.setContentType(MediaType.APPLICATION_JSON);
        } else {
            headers.setContentType(MediaType.TEXT_PLAIN);
        }
        headers.set("Authorization", sessionTokenStr);

        HttpEntity<String> entity = new HttpEntity<>(requestBody, headers);
        ResponseEntity<String> responseEntity = null;
        try {
            responseEntity = restTemplate.exchange(url, HttpMethod.PUT, entity, String.class, uriVariables);
        } catch (Exception e) {
            handleHttpClientException(e);
            throw new RestTemplateInvocationException(e);
        }

        logger.info("{}, Response code is :" + responseEntity.getStatusCodeValue(),fn);
        logger.info("{}, HTTP" + " :: Response " + " : "+ responseEntity.getBody(),fn);
        logger.info("{}, -------------------POST request end----------------------",fn);
        try {
            return JSONObject.parseObject(responseEntity.getBody());
        } catch (Exception e) {
            throw new ParseJsonException(e);
        }
    }

    public JSONObject doGet(String url, String sessionTokenStr, Map<String, ?> uriVariables) {
        final String fn = "[doGet]";
        logger.info("{}, -------------------GET request start----------------------",fn);
        String mn = "GET( " + url+ " )";
        logger.info("{}, HTTP" + " :: " + mn,fn);

        HttpHeaders headers = new HttpHeaders();
        headers.set("Authorization", sessionTokenStr);

        HttpEntity entity = new HttpEntity(headers);
        ResponseEntity<String> responseEntity = null;
        try {
            responseEntity = restTemplate.exchange(url, HttpMethod.GET, entity, String.class, uriVariables);
        } catch (Exception e) {
            handleHttpClientException(e);
            throw new RestTemplateInvocationException(e);
        }

        logger.info("{}, Response code is :" + responseEntity.getStatusCodeValue(),fn);
        logger.info("{}, HTTP" + " :: Response " + " : "+ responseEntity.getBody(),fn);
        logger.info("{}, -------------------GET request end------------------------",fn);
        try {
            return JSONObject.parseObject(responseEntity.getBody());
        } catch (Exception e) {
            throw new ParseJsonException(e);
        }
    }

    public JSONObject doGet(String url, String sessionTokenStr) {
        final String fn = "[doGet]";
        logger.info("{}, -------------------GET request start----------------------",fn);
        String mn = "GET( " + url+ " )";
        logger.info("{}, HTTP" + " :: " + mn,fn);

        HttpHeaders headers = new HttpHeaders();
        headers.set("Authorization", sessionTokenStr);

        HttpEntity entity = new HttpEntity(headers);
        ResponseEntity<String> responseEntity = null;
        try {
            responseEntity = restTemplate.exchange(url, HttpMethod.GET, entity, String.class);
        } catch (Exception e) {
            handleHttpClientException(e);
            throw new RestTemplateInvocationException(e);
        }

        logger.info("{}, Response code is :" + responseEntity.getStatusCodeValue(),fn);
        logger.info("{}, HTTP" + " :: Response " + " : "+ responseEntity.getBody(),fn);
        logger.info("{}, -------------------GET request end------------------------",fn);
        try {
            return JSONObject.parseObject(responseEntity.getBody());
        } catch (Exception e) {
            throw new ParseJsonException(e);
        }
    }

    public JSONObject doDelete(String url, String sessionTokenStr, Map<String, ?> uriVariables) {
        final String fn = "[doDelete]";
        logger.info("{}, -------------------DELETE request start----------------------",fn);
        String mn = "DELETE( " + url+ " )";
        logger.info("{}, HTTP" + " :: " + mn,fn);

        HttpHeaders headers = new HttpHeaders();
        headers.set("Authorization", sessionTokenStr);

        HttpEntity entity = new HttpEntity(headers);
        ResponseEntity<String> responseEntity = null;
        try {
            responseEntity = restTemplate.exchange(url, HttpMethod.DELETE, entity, String.class, uriVariables);
        } catch (Exception e) {
            handleHttpClientException(e);
            throw new RestTemplateInvocationException(e);
        }

        logger.info("{}, Response code is :" + responseEntity.getStatusCodeValue(),fn);

        logger.info("{}, HTTP" + " :: Response " + " : "+ responseEntity.getBody(),fn);
        logger.info("{}, -------------------DELETE request end------------------------",fn);
        try {
            return JSONObject.parseObject(responseEntity.getBody());
        } catch (Exception e) {
            throw new ParseJsonException(e);
        }

    }

    public JSONObject doDelete(String url, String sessionTokenStr) {
        final String fn = "[doDelete]";
        logger.info("{}, -------------------DELETE request start----------------------",fn);
        String mn = "DELETE( " + url+ " )";
        logger.info("{}, HTTP" + " :: " + mn,fn);

        HttpHeaders headers = new HttpHeaders();
        headers.set("Authorization", sessionTokenStr);

        HttpEntity entity = new HttpEntity(headers);
        ResponseEntity<String> responseEntity = null;
        try {
            responseEntity = restTemplate.exchange(url, HttpMethod.DELETE, entity, String.class);
        } catch (Exception e) {
            handleHttpClientException(e);
            throw new RestTemplateInvocationException(e);
        }

        logger.info("{}, Response code is :" + responseEntity.getStatusCodeValue(),fn);

        logger.info("{}, HTTP" + " :: Response " + " : "+ responseEntity.getBody(),fn);
        logger.info("{}, -------------------DELETE request end------------------------",fn);
        try {
            return JSONObject.parseObject(responseEntity.getBody());
        } catch (Exception e) {
            throw new ParseJsonException(e);
        }

    }

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值