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