2010-11-22 38 views
0

Bonjour tout le monde!en-tête de flux invalide: 47455420 - Java Input Stream

Actuellement j'écris une application Client/Serveur simple qui utilise des sockets pour faire la communitcation. Mon application client et mon serveur fonctionnent correctement, mais si j'essaie d'interroger mon application serveur avec un véritable navigateur Web (comme Mozilla Firefox), alors il s'agit d'une exception.

Je pense que mes flux ne sont pas compatibles avec Mozilla Firefox. Cette petite ligne de code conduit toujours à une exception IOException avec le message d'erreur "en-tête de flux invalide: 47455420".

De Firefox J'essaie de se connecter via: http://localhost:7777/some-webpage.html

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

Quelqu'un sait-il pourquoi cela se produit? L'aide est vue avec plaisir.

Salutations

Benny

Répondre

0

ObjectInputStream attend un format binaire. Vous ne pouvez pas utiliser un navigateur Web pour produire le format binaire qu'il lit. Le navigateur Web parlera du protocole HTTP, et votre serveur ne s'y attend pas du tout.

Vous avez probablement besoin de connaître les services Web. Vous pouvez trouver le support JAX-RS dans CXF pratique pour ce que vous semblez vouloir faire. Pour simplement passer à HTTP, la seule chose à faire est de mettre en place une servlet: google serait votre ami pour en savoir plus.

+0

Merci pour la réponse rapide.Il y a-t-il une bibliothèque pour importer facilement le protocole HTTP? Ou puis-je y parvenir en changeant simplement mon format de flux d'entrée? –

+0

J'utilise maintenant le InputStream standard au lieu de ObjectInputStream. Cela convient parfaitement aux webbrowsers et peut être lu avec un InputStreamReader dans un BufferedReader. J'ai également implémenté les bases de HTTP/1.1 pour que ça fonctionne maintenant. :-) Merci pour vos conseils. –