远程调用过程JSON数据过大,连接超时

来源:互联网 发布:金字塔软件使用说明书 编辑:程序博客网 时间:2024/06/06 13:05

远程调用(rest请求)

    在使用rest获取JSON时,往往有时响应数据太大。我们一般会考虑分页,请求中包含了一些分页参数,pageNum,pageSize等。但是我碰到一个场景就是,需要一次性加载所有数据供客户端进行自定义排序(例如:客户端可以按字母排序等)一但数据量过大就会造成eof异常。这时候需要服务器进行数据的压缩,那么我只需要解析服务器给我的数据即可:
private ResponseEntity<String> execute(String url) {        HttpHeaders requestHeaders = new HttpHeaders();        requestHeaders.set("Content-type", "application/json; charset=UTF-8");        requestHeaders.setAccept(Collections.singletonList(new MediaType("application","json")));        // 重要:使用GZIP压缩发送        requestHeaders.set("Accept-Encoding", "GZIP");        requestHeaders.set("Connection", "Close");        requestHeaders.set("Transfer-Encoding","chunked");        HttpEntity<?> requestEntity = new HttpEntity<Object>(requestHeaders);        RestTemplate restTemplate = new RestTemplate();        restTemplate.getMessageConverters().add(new StringHttpMessageConverter());        Date d = new Date();        ResponseEntity<String> responseEntity = restTemplate.exchange(url, HttpMethod.GET, requestEntity, String.class);        Date d1 = new Date();        logger.info(url+"----请求时间:----"+(d1.getTime()-d.getTime())+"-----");        return responseEntity;        // 这里可检测访问时间,控制请求超时时间        /*SimpleClientHttpRequestFactory requestFactory = new SimpleClientHttpRequestFactory();        requestFactory.        requestFactory.setReadTimeout(5000);        requestFactory.setConnectTimeout(100);        restTemplate.setRequestFactory(requestFactory);        Date d = new Date();        restTemplate.execute(url, HttpMethod.GET);        ResponseEntity<String> entity = restTemplate.getForEntity(url, String.class);        Date d1 = new Date();        logger.info(url+"----请求时间:----"+(d1.getTime()-d.getTime())+"-----");        return entity;*/    }