2010-11-22 5 views
0

Hello World!неверный заголовок потока: 47455420 - Java Input Stream

В настоящее время я пишу простое клиентское/серверное приложение, которое использует сокеты для выполнения комминирования. Приложение «Мой клиент» и «Мой сервер» отлично работают друг с другом, но если я попытаюсь выполнить запрос к моему серверному приложению с помощью реального веб-браузера (например, Mozilla Firefox), тогда это станет исключением.

Я думаю, что мои потоки не совместимы с Mozilla Firefox. Эта небольшая строка кода всегда приводит к IOException с сообщением об ошибке «недопустимый заголовок потока: 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 ожидает двоичный формат. Вы не можете использовать веб-браузер для создания двоичного формата, который он читает. Веб-браузер будет говорить HTTP-протокол, и ваш сервер не ожидает этого вообще.

Возможно, вам необходимо узнать о веб-сервисах. Вы можете найти поддержку JAX-RS в CXF, удобную для того, что вы, похоже, хотите сделать.

Чтобы просто перейти к HTTP, минимальная задача - реализовать сервлет: Google будет вашим другом, узнав о них.

+0

Спасибо за быстрый ответ. Есть ли библиотека для простого импорта протокола HTTP? Или я могу достичь этого, просто изменив формат входного потока? –

+0

Теперь я использую стандартный InputStream вместо ObjectInputStream. Это идеально подходит для веб-браузеров и может быть прочитано с помощью InputStreamReader в BufferedReader. Я также реализовал основы HTTP/1.1, так что теперь он работает. :-) Спасибо за ваш совет. –