我尝试使用java从fred(federalreserve经济数据)获取大数据,但是存在一些问题。下面是示例代码。
for(US_STATE state : US_STATE.values()) { // for every us-states loop
String fredUrl = "https://api.stlouisfed.org/fred/series/search?search_text=Unemployment Rate in " + state.toString() + &api_key=**********&file_type=json";
ObjectMapper mapper = new ObjectMapper();
JsonNode rootNode = mapper.readTree(new URL(fredUrl)); // request url in this line
Thread.sleep(500); // insert sleep line to avoid the http errors
ArrayNode nodeSeriess = (ArrayNode)rootNode.get("seriess");
// I make the jsonnode stream , extract series_id from rootNode and make another url string
Stream<JsonNode> elementStream = StreamSupport.stream(nodeSeriess.spliterator(), false);
elementStream.flatMap(pojo -> {
String observUrl = "https://api.stlouisfed.org/fred/series/observations?series_id=" + pojo.getSeriesId() + "&api_key=***********&file_type=json";
// I request url again in the stream
JsonNode nodeValue = mapper.readTree(new URL(observUrl));
Thread.sleep(500); // insert sleep line to avoid the http errors
ArrayNode nodeValueObserv = (ArrayNode)nodeValue.get("observations");
...... // processing data from this line
});
如您所见,我的代码执行了太多的javaurl-api。所以我想我要面对http响应代码:504表示url。
我通过google发现504错误与客户机代码无关,但是当我执行太多javaurl时,我总是收到这个错误。我想知道如何通过编程避免这个错误。恐怕我的java程序在for循环中调用java url的次数太多了。
暂无答案!
目前还没有任何答案,快来回答吧!