2017-01-25 8 views
0

java ProcessBuilderでcurlコマンドを使用しています。 curlコマンドは、コマンドラインで次のようなJSONの例を返します。Java curl response

{"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 is = 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