2010-11-22 28 views
0

Hello World!geçersiz akış üstbilgisi: 47455420 - Java Giriş Akışı

Şu anda iletişim kurmak için yuva kullanan basit bir İstemci/Sunucu uygulaması yazıyorum. İstemcim ve Sunucu uygulamam birbiriyle uyumlu çalışıyor ancak Sunucu uygulamamı gerçek bir web tarayıcısıyla (Mozilla Firefox gibi) sorgulamaya çalışırsam, bir istisna söz konusudur.

Akışlarımın Mozilla Firefox ile uyumlu olmadığını düşünüyorum. Bu küçük kod satırı, her zaman "geçersiz akış üstbilgisi: 47455420" hata iletisiyle bir IOException uygulamasına yol açar. Firefox'ta

ben üzerinden bağlanmayı deneyin: http://localhost:7777/some-webpage.html

Bu benim kodudur: neden bu olur

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

bilen var mı? Yardım, zevkle görülür.

Selamlar

Benny

cevap

0

ObjectInputStream bir ikili biçimde bekler. Okuduğu ikili biçimi üretmek için bir web tarayıcısı kullanamazsınız. Web tarayıcısı HTTP protokolü konuşacak ve sunucunuz hiç beklemiyor.

Muhtemelen web servisleri hakkında bilgi edinmeniz gerekiyor. Yapmak istediğiniz şey için uygun olan JAX-RS desteğini CXF'da bulabilirsiniz.

HTTP'ye girmek için yapmanız gereken en az şey bir sunucu uygulamasıdır: google onları öğrenirken arkadaşınız olur.

+0

Hızlı yanıt için teşekkürler. HTTP protokolünü kolayca almak için bir kütüphane var mı? Ya da sadece Giriş Akışı formatımı değiştirerek bunu başarabilir miyim? –

+0

Artık ObjectInputStream yerine standart InputStream kullanıyorum. Bu, web tarayıcıları için mükemmel bir uyum sağlar ve bir BufferedReader'da bir InputStreamReader ile okunabilir. HTTP/1.1 temellerini de uyguladım, şimdi çalışıyor. :-) Tavsiyeniz için teşekkürler. –