将curl命令循环到多个地址的Java程序

将curl命令循环到多个地址的Java程序,java,curl,Java,Curl,这里有点麻烦 我正在做的是一个程序,它检查我们的站点并使用Spring的RestTemplate返回数据,然后将输出放在一个临时文件中 我遇到的问题是,我们必须检查几个具有相同主机名但映射不同的地址(website.com/a/1、website.com/a/2、website.com/b/1等) 所以我想我必须把地址作为参数传递,每次循环通过curl命令。我只是不知道如何做到这一点 以下是我目前掌握的情况: @SpringBootApplication public class Applica

这里有点麻烦

我正在做的是一个程序,它检查我们的站点并使用Spring的RestTemplate返回数据,然后将输出放在一个临时文件中

我遇到的问题是,我们必须检查几个具有相同主机名但映射不同的地址(website.com/a/1、website.com/a/2、website.com/b/1等)

所以我想我必须把地址作为参数传递,每次循环通过curl命令。我只是不知道如何做到这一点

以下是我目前掌握的情况:

@SpringBootApplication
public class Application implements CommandLineRunner {

private static final Logger log = LoggerFactory.getLogger(Application.class);

public static void main(String args[]) {
    SpringApplication.run(Application.class);
}

@Override
public void run(String... strings) throws Exception {
    ProcessBuilder pb = new ProcessBuilder(
            "curl",
            "-k",   //  "-s",
            "https://website.com:8443/Service/a/1234");

    pb.directory(new File("c:\\users\\axxxxxx"));
    pb.redirectErrorStream(true);
    Process p = pb.start();
    InputStream is = p.getInputStream();

    FileOutputStream outputStream = new FileOutputStream("c:\\temp\\output.json");
    // System.out.println("In main");

    String line;
    BufferedInputStream bis = new BufferedInputStream(is);
    byte[] bytes = new byte[100];
    int numberBytesRead;
    while ((numberBytesRead = bis.read(bytes, 0, 100)) != -1) {

        outputStream.write(bytes, 0, numberBytesRead);
        Arrays.fill(bytes, (byte) 0);

    }

    outputStream.flush();
    outputStream.close();

感谢所有看过这篇文章的人

为什么你不能使用HttpURLConnection?我不太清楚为什么我们没有尝试过。我们对每个请求都有很多身份验证,所以curl-k绕过了这一点。这可能是我能想到的唯一原因。