2013-09-17 3 views
0

В настоящее время я отправляю запрос, как показано ниже, и хотел распечатать ответ и выйти. Есть ли надежный способ получить весь ответ, а затем выйти, т. Е. Вместо того, чтобы сломать цикл после x строк или x секунд (что будет иметь проблемные случаи)? В настоящее время программа никогда не выходит, поскольку блоки Scanner ждут большего ввода. Как еще можно распечатать ответ, если не с какой-либо комбинацией цикла/считывателя, которая может блокироваться?Как распечатать HTTP-ответ, а затем выйти

public class PingHost { 
    public static void main(String[] args) throws Exception { 
     Socket s = new Socket("www.google.com", 80); 
     DataOutputStream out = new DataOutputStream(s.getOutputStream()); 
     out.writeBytes("GET/HTTP/1.1\n\n"); 
     Scanner sc = new Scanner(s.getInputStream()); 
     while (sc.hasNext()) 
     System.out.println(sc.nextLine()); 
     System.out.println("never gets to here"); 
     s.close(); 
    } 
} 

ответ

1

Я не уверен на 100 процентов, что вы хотите сделать здесь. Но если вы хотите просто получить html ответной страницы и перейти дальше, то попробуйте этот образец кода:

/** 
* Example call:<br> 
* sendHTTPRequestAndSysoutData("http://www.google.com"); 
* @param target 
*/ 

public static void sendHTTPRequestAndSysoutData(String target){ 
    try{ 
     URL my_url = new URL(target); 
     BufferedReader br = new BufferedReader(new InputStreamReader(my_url.openStream())); 
     String strTemp = ""; 
     while (null != (strTemp = br.readLine())){ 
      System.out.println(strTemp); 
     } 
    } 
    catch(IOException e){ 
     e.printStackTrace(); 
    } 
} 
Смежные вопросы