【发布时间】:2023-09-07 13:51:01
【问题描述】:
我有一个与 java ProcessBuilder 一起使用的 curl 命令。 curl 命令在命令行返回以下 JSon 示例:
{"Token":{"urlString":"JAAIZ2phZWhybGkIZ2phZWhybGkAigFZ1UOgr4oBWflQJK}}
使用下面的java代码,读取的行总是空的,我不明白为什么。
ProcessBuilder pb = new ProcessBuilder("curl", "-k", "-negotiate", "-s", "-u", ":", "https://host:port/webhdfs/v1/?op=GETDELEGATIONTOKEN&renewer", "=", "user");
Process p = pb.start();
InputStream is = p.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
StringBuilder responseStrBuilder = new StringBuilder();
String line = new String();
while ((line = br.readLine()) != null) {
System.out.println("read line from curl command: " + line);
responseStrBuilder.append(line);
}
【问题讨论】:
-
只试一次 InputStream is = p.getErrorStream() 并检查您是否收到任何错误信息。
-
如果您只想执行 HTTP 请求,why not use
URL -
感谢建议,没有错误。切换到 InputStream 是 = p.getErrorStream();返回一个空流。
-
如果我在 curl 命令 ""curl"、"-i"、"-k" .... 中包含 -i,那么我会返回标题。所以 curl 会重新运行某些内容和 InputStream 等. 正在工作。但我从未得到过 Json 的消息。
标签: java json curl processbuilder