【问题标题】:Using Array to fetch multiple URL via HTTPGET in java在java中使用数组通过HTTPGET获取多个URL
【发布时间】:2017-10-19 08:49:09
【问题描述】:

我有一个字符串数组 a[],其中包含我想传递到下面的 HttpGet 代码中的几个 url

        for (int i = 0; i < size; i++);{
        try (CloseableHttpClient httpclient = HttpClients.custom().setDefaultCredentialsProvider(credsProvider).build()){
                HttpGet httpget = new HttpGet(a[i]);

                /*WRITE TO FILE*/
                /*try (CloseableHttpResponse response = httpclient.execute(new HttpGet(a[i]))){
                    HttpEntity entity = response.getEntity();
                    if (entity != null) {
                        try (FileOutputStream outstream = new FileOutputStream(AgentRequirements)) {
                        entity.writeTo(outstream);
                        }
                    }
                }*/

                /*SHOW EXECUTION*/
                System.out.println("Executing request " + httpget.getRequestLine());
                try (CloseableHttpResponse response = httpclient.execute(httpget)) {
                    System.out.println("----------------------------------------");
                    System.out.println(response.getStatusLine());
                    System.out.println(EntityUtils.toString(response.getEntity()));
                }
            }
    }

我的构建失败,因为它说系统找不到符号“i”。有人可以帮忙吗?

【问题讨论】:

    标签: java arrays http-get


    【解决方案1】:

    你在这里有什么:

    for (int i = 0; i < size; i++);{
    ...
    }
    

    首先是一个带有空语句的循环

    for (int i = 0; i < size; i++);
    

    后跟一个块语句(与循环无关)

    {
    ...
    }
    

    问题出在你的循环迭代并且什么都不做,和

    一样
    for (int i = 0; i < size; i++){
        ;
    }
    {
    ...
    }
    

    只需删除将循环与语句块分开的;。这样,该块将成为每个循环执行的块。

    for (int i = 0; i < size; i++){
        ...
    }
    

    仅供参考:

    重要的是要知道,没有什么可以阻止您在方法的任何位置添加块语句。

    所以你可以拥有

    public static void main(String[] args){
        {
            int i = 0;
            System.out.println(i);
            {
                int j = 0;
                System.out.println(i);
                System.out.println(j);
            }
            System.out.println(j); // ERROR - j doesn't exist here
        }
        System.out.println(i); // ERROR - i doesn't exist here
    }
    

    这个想法是i 只存在于该块中,您不能在该块之外使用它。

    【讨论】:

    • 你的回答更好。它确实解释了为什么以及如何。我也喜欢你最后的信息sn-p :)
    【解决方案2】:

    删除for循环末尾的;,因为如果它停留在那里,则forloop不会循环,因为块已经关闭。这就是为什么在块之外找不到i(你的try-catch)。

    for (int i = 0; i < size; i++);{
        // your code
    }
    

    和这个是一样的:

    for (int i = 0; i < size; i++){}
    {
        // your code
    }
    

    【讨论】:

      【解决方案3】:
      for (int i = 0; i < size; i++);
                                    ^
      

      你有一个松散的分号,会破坏你的 for 循环。

      【讨论】:

        【解决方案4】:

        您的 forloop 格式不正确:

        for (int i = 0; i < 10; i++);{
        

        去掉分号“;”

        for (int i = 0; i < 10; i++){
        

        【讨论】:

          【解决方案5】:
           for (int i = 0; i < size; i++);
          

          冗余符号';'在最后。它关闭了“for循环”运算符

          【讨论】:

            猜你喜欢
            • 2020-08-04
            • 2014-11-29
            • 1970-01-01
            • 2012-05-07
            • 2019-05-01
            • 1970-01-01
            • 2011-10-21
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多