在 java 中使用数组通过 HTTPGET 获取多个 URL

Using Array to fetch multiple URL via HTTPGET in java

我有一个字符串数组 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'。有人可以帮忙吗?

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

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

与此相同:

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

你有一个松散的分号,它打破了你的 for 循环。

您的 for 循环格式不正确:

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

删除分号“;”

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

冗余符号“;”在末尾。它关闭 'for loop' 运算符

你这里有什么:

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 只存在于该块中,您不能在块外使用它。