从调用Web服务API处理大型CSV字符串

时间:2018-02-05 02:40:32

标签: java rest

我调用一个rest服务,它在第一次调用时返回一个对象的ID。除了要读取的对象的ID之外,它还给出了字节长度。

但是,返回的CSV数据最多可达200​​,000行。这会导致内存不足异常,因为从Java程序中读取所有200,000行来自休息调用的内存。

返回的LinkedList是弹簧模板返回的CSV结构。问题是,当等效的CSV文件超过200,000行时,RestTemplate无法保留它,因此我会遇到内存不足的问题。

还有其他方法可以操纵Stream API来处理可以逐步阅读的UriComponentsBuilder builder = UriComponentsBuilder.newInstance(); builder.scheme("https).pathSegment("/file-object").host(hostName); // Call the third-party Rest API ResponseEntity<?> responseEntity = restTemplate.exchange( builder.queryParam("fileId", "fjr666eH").build().toUri(), HttpMethod.GET, new HttpEntity(httpAuthorizationHeaders("UID","XFCode:66w000")), Object.class ); // CSV file is returned by Spring as a linked list. But since data is // large I get an OOM exception LinkedHashMap<String, Object> map = (LinkedHashMap<String, Object>) responseEntity.getBody(); 数据吗?

GET https://github.com/login/oauth/authorize

1 个答案:

答案 0 :(得分:0)

我能够使用Spring Rest API提供的Streaming功能。我使用了SimpleClientHttpRequestFactory,BufferedReader,并且能够将块大小设置为一次读取。