2010-11-22 5 views
0

Hallo Welt!Ungültiger Stream-Header: 47455420 - Java-Eingangsstrom

Derzeit schreibe ich eine einfache Client/Server-Anwendung, die Sockets verwendet, um die Communitcation zu tun. Mein Client und meine Server-Anwendung funktionieren gut miteinander, aber wenn ich versuche, meine Server-Anwendung mit einem echten Web-Browser (wie Mozilla Firefox) abzufragen, kommt es zu einer Ausnahme.

Ich denke, dass meine Streams nicht mit Mozilla Firefox kompatibel sind. Diese kleine Codezeile führt immer zu einer IOException mit der Fehlermeldung "ungültiger Stream-Header: 47455420".

Von Firefox versuche ich über die Verbindung: http://localhost:7777/some-webpage.html

Dies ist mein Code:

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()); 
} 

Weiß jemand, warum dies geschieht? Hilfe wird gerne gesehen.

Grüße

Benny

Antwort

0

Der Object ein binäres Format erwartet. Sie können keinen Webbrowser verwenden, um das gelesene Binärformat zu erstellen. Der Webbrowser spricht das HTTP-Protokoll, und Ihr Server erwartet das überhaupt nicht.

Wahrscheinlich müssen Sie etwas über Webdienste erfahren. Vielleicht finden Sie die JAX-RS-Unterstützung in CXF bequem für das, was Sie scheinen zu tun.

Um einfach zu HTTP zu gelangen, müssen Sie nur ein Servlet implementieren: Google wäre Ihr Freund, wenn Sie etwas über sie erfahren möchten.

+0

Danke für die schnelle Antwort.Ist es eine Bibliothek zum einfachen Importieren des HTTP-Protokolls? Oder kann ich das erreichen, indem ich nur mein Input-Stream-Format ändere? –

+0

Ich verwende jetzt den Standard-InputStream anstelle von ObjectInputStream. Dies passt perfekt für Webbrowser und kann mit einem InputStreamReader in einem BufferedReader gelesen werden. Ich habe auch die HTTP/1.1 Grundlagen implementiert, so dass es jetzt funktioniert. :-) Danke für deinen Rat. –