У меня есть веб-сервис RESTful, работающий на Джерси (GlassFish 3.1.1).Это немного необычно - используется потоковая передача HTTP.Клиент и сервер имеют длительный диалог, в котором они продолжают отправлять друг другу сообщения, закодированные в виде тегов XML.Основная причина для этого заключается в том, что сервер может передать клиенту.
У меня есть тестовый клиент, который использует HttpURLConnection
.Проблема в том, что клиентский OutputStream
или серверный InputStream
закрываются преждевременно.Когда я пытаюсь отправить немного XML с клиента, я получаю ProtocolException
брошенный (не могу записать вывод после чтения ввода).
Когда я тестирую с использованием WizTools RESTClient, я могу опубликовать запрос XML, ноЭтот инструмент не позволяет поддерживать соединение живым.Но, по крайней мере, я знаю, что веб-сервис работает, по крайней мере, в этом сценарии.(Вероятно, в сценарии потоковой передачи все просто; я думаю, что HttpURLConnection
подводит меня.
Есть ли способ заставить HttpURLConnection остаться в живых и дать мне возможность реально что-то отправить на OutputStream
? И, кроме того, есть ли способ позволить ему продолжать запись в OutputStream
даже после получения данных через InputStream
?
Обновление:
Похоже, что HttpURLConnection
обеспечивает обычное использование HTTP, а именно то, что клиент не может обработать ответ, пока он полностью не отправит запрос (и не закроет поток вывода). Есть ли альтернатива, которая будетразрешить запрос и ответ на временное перекрытие? Я только начал смотреть на Apache HttpClient, но пока не нашел ничего, что указывало бы на то, что это возможно, поэтому я не уверен, теряю ли я свое время.