如何打印出HTTP响应然后退出

时间:2013-09-17 13:07:05

标签: java sockets

我目前正在发送如下所示的请求,并希望打印出响应并退出。有没有一种强大的方法来获得整个响应然后退出,即,而不是在x行或x秒之后打破循环(这会有问题的情况)?目前,程序永远不会退出,因为Scanner块等待更多输入。如果没有某种可能阻止的循环/阅读器组合,我还能如何打印出响应?

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 个答案:

答案 0 :(得分:1)

我不是百分百肯定你想做什么。 但是如果你想获得答案页面的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();
    }
}