调用第三方接口的工具类post方式

public JSONObject post(String url, Map<String, Object> params) throws RestClientException {
        HttpEntity<?> httpEntity = getHttpEntity(params);
        String body = JSONObject.toJSONString(httpEntity.getBody());
        SysServiceLog sysServiceLog = SysServiceLog.builder().startTime(new Date()).serviceUrl(url).params(body).build();
        log.info("url " + url);
        log.info("body " + body);
        restTemplate.setErrorHandler(new ResponseErrorHandler(){
            @Override
            public boolean hasError(ClientHttpResponse response) throws IOException {
                // 返回false表示不管response的status是多少都返回没有错
                // 这里可以自己定义那些status code你认为是可以抛Error
                log.info("调用第三方返回的状态码为 : " + response.getRawStatusCode());
                return false;
            }
            @Override
            public void handleError(ClientHttpResponse response) {
                // 这里面可以实现你自己遇到了Error进行合理的处理
            }
        });
        ResponseEntity<JSONObject> response = restTemplate.postForEntity(url, httpEntity, JSONObject.class);
        JSONObject responseBody = response.getBody();
        if(responseBody != null){
            sysServiceLog.setResults(responseBody.toJSONString());
        }
        log.info("results " + sysServiceLog.getResults());
        sysServiceLog.setStatus(String.valueOf(response.getStatusCode().value()));
        // 无论接口调用结果如何,都先插入日志。
        if(!url.contains("list") & !url.contains("query") & !url.contains("get")){
            AsyncManager.getInstance().execute(AsyncFactory.insertServiceLog(sysServiceLog));
        }
        if (response.getBody() == null) {
            throw new ApplicationException("Response body is null");
        }
        return responseBody;
    }

    private HttpEntity<?> getHttpEntity(Map<String, Object> params) {
        if (params == null) {
            params = new HashMap<>(1);
        }
        params.put("timestamp", System.currentTimeMillis());
        HttpHeaders headers = new HttpHeaders();

        headers.setContentType(MediaType.APPLICATION_JSON);
        HttpEntity<?> httpEntity = new HttpEntity<>(params, headers);

        return httpEntity;
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值