0
从Chrome向本地主机发送请求时,程序收到两个请求:一个(可能是两个)空的请求和一个具有普通HTTP请求的请求。
当我对Firefox做同样的事情时,我有时会得到一个空的HTTP请求,其他的都很好。
我认为这是与图标,我不知道为什么没有在outputStream
java服务器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
-----------------------------------------
我会尝试使用bufferedreader和readline进行阅读。我在没有线程的情况下尝试了这一点,并且没有工作。无论如何,谢谢 – titus