2010-11-22 53 views
0

Hello World!无效的流头:47455420 - Java输入流

目前我正在写一个简单的客户端/服务器应用程序,它使用套接字来执行这个任务。我的客户端和我的服务器应用程序相互正常工作,但如果我尝试使用真正的Web浏览器(如Mozilla Firefox)查询我的服务器应用程序,则会发生异常。

我认为我的流与Mozilla Firefox不兼容。这个小小的代码行总是会导致IOException,并显示错误消息“invalid stream header:47455420”。

从Firefox我尝试通过连接:http://localhost:7777/some-webpage.html

这是我的代码:

server = new ServerSocket(7777); 
Socket socket = server.accept(); 
try 
{ 
    ObjectInputStream inputStream = new ObjectInputStream(new BufferedInputStream(socket.getInputStream())); 
} 
catch (IOException ex) 
{ 
    System.out.println("This exception happens :-("); 
    System.out.println(ex.getLocalizedMessage()); 
} 

是否有人知道为什么会这样? 帮助愉快地看到。

问候

回答

0

的ObjectInputStream的期望一个的二进制格式。您不能使用Web浏览器来生成它读取的二进制格式。网络浏览器将会谈论HTTP协议,而你的服务器根本就没有期待。

您可能需要了解Web服务。您可能会发现CXF中的JAX-RS支持方便了您似乎想要执行的操作。

为了直接使用HTTP,最简单的事情就是实现一个servlet:谷歌会成为你的朋友了解它们。

+0

感谢您的快速回复。是否有一个库可以轻松导入HTTP协议?或者我可以通过改变输入流格式来实现吗? – 2010-11-22 01:58:04

+0

我现在使用标准InputStream而不是ObjectInputStream。这非常适合web浏览器,并且可以通过BufferedReader中的InputStreamReader读取。我也实现了HTTP/1.1基础知识,因此它现在可以工作。 :-) 谢谢你的建议。 – 2010-11-23 02:54:01