【发布时间】:2020-01-20 12:10:16
【问题描述】:
我有 curl 命令,它在 cmd 中工作正常,但我想在 java 代码中运行它。主要的 bout 命令是它正在调用一个也需要身份验证的“POST”API。 我也使用过调试器,它不会进入循环来读取响应
String[] command = {"curl",url, "-H" ,"Content-Type: application/x-www-form-urlencoded","-X", username+ "&" + password ,"insecure"};
ProcessBuilder process = new ProcessBuilder(command);
Process p;
try
{
p = process.start();
BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream()));
StringBuilder builder = new StringBuilder();
String line="" ;
while ( (line = reader.readLine()) != null) {
builder.append(line);
System.out.println(line);
builder.append(System.getProperty("line.separator"));
}
String result = builder.toString();
System.out.print(result);
}
curl 'https://integration.sirionlabs.office:9443/nifi-api/access/token' -H 'Content-Type: application/x-www-form-urlencoded; charset=UTF-8' --data 'username=username&password=password' --compressed --insecure
预期的结果是我需要的不记名令牌
【问题讨论】:
-
我想在java代码中运行这个命令:curl 'integration.sirionlabs.office:9443/nifi-api/access/token' -H 'Content-Type: application/x-www-form-urlencoded; charset=UTF-8' --data 'username=username&password=password' --compressed --insecure
-
您正在以错误的方向接近解决方案,您应该寻找 HTTP 客户端而不是从 Java 运行命令。
-
出于几个原因,例如 windows 没有 curl,因此您的代码根本无法在 windows 上运行。而且代码将很难维护