2011-12-29 3 views
0

Я пытаюсь периодически отправлять почтовые запросы, включая рис. На сайт. Он работает в первый раз, но затем держится. Что я делаю не так?Java Process не завершает

p = r.exec("curl --form api_key=<key> --form api_secret=<secret> " 
      + "--form [email protected] -m 20 " 
      + "http://api.face.com/faces/detect.json"); 

BufferedReader br = 
     new BufferedReader(new InputStreamReader(p.getInputStream())); 

String line = "", text = ""; 

while ((line = br.readLine()) != null) { 
    text += line + System.getProperty("line.separator"); 
} 

System.out.println(text); 
+0

Кажется, что вы забыли закрыть BufferedReader. Я не знаю, поможет ли это решить вашу проблему, но оставление потока может вызвать некоторые другие ошибки. –

ответ

0

Мое предположение, что это ошибка печати, которую вы не видите. (Я предлагаю вам использовать ProcessBuilder для перенаправления сообщений об ошибках на std) или процесс висит.

0

Перед выполнением нового запроса попробуйте выполнить промывку и закрытие буферизованного считывателя. Я никогда не использовал завиток, но может быть, вам нужно подождать, пока процесс не будет выполнен, прежде чем запускать новый?

+0

Ты мне очень помог. Ошибка заключалась в использовании Runtime.exec, а также BufferedReader. Я переключился на ProcessBuilder и InputStream. Теперь все в порядке. Спасибо вам за все. – jarCrack