2013-01-04 76 views
0

从Chrome向本地主机发送请求时,程序收到两个请求:一个(可能是两个)空的请求和一个具有普通HTTP请求的请求。
当我对Firefox做同样的事情时,我有时会得到一个空的HTTP请求,其他的都很好。
我认为这是与图标,我不知道为什么没有在outputStreamjava服务器http服务器收到来自Chrome的空请求

ServerSocket server=null; 
Socket socket; 
try 
{ server=new ServerSocket(80); 
    while(true) 
    { try 
     { socket = server.accept(); 
      Worker worker=new Worker(socket); 
      (new Thread(worker)).start(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 
} 

.... 
//Worker.java 


public class Worker implements Runnable 
{ private Socket socket; 
    public void run() 
    { try 
     { InputStream inStream = new BufferedInputStream(
                socket.getInputStream()); 
      byte[] array = new byte[1000]; 
      ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); 
      while(inStream.available()>0) 
      { outputStream.write(array); 
      } 
      System.out.println("-----------------------------------------"); 
      System.out.println(outputStream); 
      System.out.println("-----------------------------------------"); 

      } 
      catch (IOException e) 
      { e.printStackTrace(); 
      } 
      try 
      { socket.close(); 
      } 
      catch (IOException e) 
      { e.printStackTrace(); 
      } 
     } 
     public Worker(Socket socket) 
     { this.socket=socket; 
     } 
    } 

样品要求任何东西从Chrome中:

----------------------------------------- 

----------------------------------------- 
----------------------------------------- 

----------------------------------------- 
----------------------------------------- 
GET/HTTP/1.1 
Host: localhost 
Connection: keep-alive 
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11 
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 
Accept-Encoding: gzip,deflate,sdch 
Accept-Language: en-US,en;q=0.8 
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3 

----------------------------------------- 

回答

1

可用()ISN”对流结束进行有效的测试。看到Javadoc。你应该逐行阅读所有的标题,直到你得到一个空行。

+0

我会尝试使用bufferedreader和readline进行阅读。我在没有线程的情况下尝试了这一点,并且没有工作。无论如何,谢谢 – titus

相关问题