如何避免java.io.ioexception:服务器以编程方式返回url的http响应代码:504

u59ebvdq  于 2021-07-03  发布在  Java
关注(0)|答案(0)|浏览(296)

我尝试使用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的次数太多了。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题