http restTemplate json 请求

restTemplate 如何进行application/json的请求方式

 


@SuppressWarnings("unused")
@Component
public class RestRequest implements IDataRequest<HttpRequestParam> {
    private Logger logger = LoggerFactory.getLogger(getClass());

    @Override
    public String request(HttpRequestParam param) throws IllegalArgumentException, RequestException, TimeoutException {
        String httpUrl = param.getUrl();
        SimpleClientHttpRequestFactory httpRequestFactory = new SimpleClientHttpRequestFactory();
        httpRequestFactory.setReadTimeout(param.getReadTimeout());
        httpRequestFactory.setConnectTimeout(param.getConnectTimeout());
        RestTemplate rest = new RestTemplate(httpRequestFactory);

        String result = "";
        try {
            result = rest.postForObject(httpUrl, buildRestParam(param), String.class);
        } catch (RestClientException e) {
            logger.error(e.getMessage(), e, e.getCause());
            throw  new RequestException(e.getMessage(), e);
        }
        logger.info("Rest请求成功结果报文长度:{}",result.length());
        if (result.length() < 50) {
            logger.error("Rest请求失败:{}", result);
        }
        return result;
    }
    @Override
    public String requestJson(HttpRequestParam param) throws IllegalArgumentException, RequestException, TimeoutException {
        String httpUrl = param.getUrl();
        SimpleClientHttpRequestFactory httpRequestFactory = new SimpleClientHttpRequestFactory();
        httpRequestFactory.setReadTimeout(param.getReadTimeout());
        httpRequestFactory.setConnectTimeout(param.getConnectTimeout());
        RestTemplate rest = new RestTemplate(httpRequestFactory);
        rest.getMessageConverters().set(1, new StringHttpMessageConverter(StandardCharsets.UTF_8)); //设置转换编码
        String result = "";
        try {
            //application/json 请求
            HttpHeaders requestHeaders = new HttpHeaders();
            requestHeaders.setContentType(MediaType.APPLICATION_JSON);
            HttpEntity<Map<String, Object>> requestEntity = new HttpEntity<>(param.getUrlParams(), requestHeaders);
            result = rest.postForObject(httpUrl, requestEntity, String.class);
        } catch (RestClientException e) {
            logger.error(e.getMessage(), e, e.getCause());
            throw  new RequestException(e.getMessage(), e);
        }
        logger.info("Rest请求成功结果报文长度:{}",result.length());
        if (result.length() < 50) {
            logger.error("Rest请求失败:{}", result);
        }
        return result;
    }
    protected MultiValueMap<String, Object> buildRestParam(HttpRequestParam param) {
        MultiValueMap<String, Object> httpParam = new LinkedMultiValueMap<String, Object>();
        if (param.getUrlParams().size() == 0) {
            return httpParam;
        }
        for (String key : param.getUrlParams().keySet()) {
            Object value = param.getUrlParams().get(key);
            if (value instanceof File) {
                FileSystemResource resource = new FileSystemResource((File) value);
                httpParam.add(key, resource);
            } else {
                httpParam.add(key, value);
            }
        }
        return httpParam;

    }

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值