2017-01-25 11 views
0

У меня есть команда curl, используемая с java ProcessBuilder. Локон команда возвращает следующий пример 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