2017-01-25 129 views
0

我有一個用於Java ProcessBuilder的curl命令。 curl命令返回的命令行下面的JSON例子:Java curl響應

{"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); 
} 
+1

只需嘗試一次InputStream = p.getErrorStream()並檢查您是否收到任何錯誤或不是。 –

+1

如果您只想執行HTTP請求,[爲什麼不使用'URL'](https://docs.oracle.com/javase/tutorial/networking/urls/readingURL.html) – Michael

+0

感謝您的建議,那裏沒有錯誤。切換到InputStream是= p.getErrorStream();返回empyt流。 – Gerd

回答

0

該命令是錯誤的。另外 - 在協商之前丟失了:

curl -k --negotiate