【问题标题】:Java curl responseJava 卷曲响应
【发布时间】: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


【解决方案1】:

命令错误。在协商之前缺少一个额外的 - :

curl -k --negotiate

【讨论】: