| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java: Работа с сетью > передача данных на сервер... |
| Автор: Swatch 28.1.2008, 11:03 | ||||||
| Добрый день столкнулась со следующей проблемой: надо передать данные с клиента сервлету, чтобы он сохранил данные в БД. Вот моя реализация. клиент:
сервлет:
на клиенте вызываю метод setCategory:
сервлету вообще ничего не передается... пыталась через system.out.println() посмотреть, что приходит... но ничего не получаю, видимо, ничего не приходит... |
| Автор: LSD 28.1.2008, 14:10 |
| Скорее всего ты просто шлёшь на сервер свой объект сериализованный в XML и все. Без всяких HTTP заголовков, и сервер его просто игнорирует т.к. не понимает подобного запроса. Используй http://hc.apache.org/httpclient-3.x/. |
| Автор: Swatch 28.1.2008, 14:43 |
| А можно пример использования HttpClient-а для передачи данных сервлету? и что, хмл-ками вообще сервлету ничего передать нельзя? |
| Автор: COVD 28.1.2008, 16:57 |
| Swatch, в ваш пример надо добавить conn.getInputStream(); после записи обьекта. Таким образом вы дадите понять клиенту, что закончили писать данные и переходите к чтение ответа сервера. И тогда данные, записанные в буфер операцией writeObject, будут отправлены на сервер. А так они не отправляются. Сделано так потому, что метод post требует указания в хедере размера пересылаемых данных. Пока вы не закончили писать в буфер, размер определить нельзя. |
| Автор: Swatch 29.1.2008, 10:12 | ||||
| хммм... поставила conn.getInputStream() после e.writeObject(obj) в клиенте. получила следующую ошибку лог томКэт-а:
лог-клиента:
что это такое, не подскажете? почему возникает ошибка??? |
| Автор: Ulysses4j 29.1.2008, 10:48 |
| Swatch, вам же сказали, нельзя с Томкатом так общаться, с ним надо по http://ru.wikipedia.org/wiki/HTTP разговаривать. Вы что-нибудь слышали о http://ru.wikipedia.org/wiki/Сетевой_протокол вообще? Использование определенного протокола налагает набор требований на формат пересылаемых сообщений, нельзя просто одни данные (ваш XML-кодированный объект) слать, нужно еще разной метаинформации (информации о пересылаемой информации и ее отправителе)... Если вам хочется просто пересылать информацию, нужно написать свой маленький сервер и использовать его вместо Tomcat: повесить на другой порт и слушать его, если позволяют привилегии на серверной машине. Для Tomcat наиболее распространены http://ru.wikipedia.org/wiki/Тонкий_клиент — на основе браузера. Писать толстый клиент для Tomcat с вашей подготовкой, судя по вему, дело на данный момент малоперспективное — вы уж не обижайтесь: это самый сложный из трех вариантов (тонкий клиент, свой маленький сервер, толстый клиент). |
| Автор: Swatch 29.1.2008, 11:20 |
| Вообще, о сетевых протоколах я много чего слышала... просто раз сказали, что надо вставить conn.getInputStream(), я и попробовала... и ничего страшного нет, если человек пытается начать со сложного... |
| Автор: Ulysses4j 29.1.2008, 11:30 | ||
Страшного нет ничего — это верно. Просто вряд ли у него что-то получится: учатся обычно от простого к сложному — тут впору не про сетевые протоколы говорить, а про «Рассуждение о методе» Декарта и т. п. Хотя, если не охота с Декартом связываться, надо просто читать книжки: про те же сетевые протоколы и написание сетевых приложений в Java, скажем — ведь есть литература соответсвующая. Форумы все-таки не могут заменить определенный базовый бэкграунд.
Вспоминается совет из книжки «Программист-прагматик», кажется: не программируйте в расчете на случай. |
| Автор: Swatch 29.1.2008, 14:18 | ||||||
| может быть кому-то решение моей проблемы покажется кривым, накопала пару примеров и к своей реализации кое-что добавила. в итоге получилось следующее. клиент:
сервлет:
в итоге, все отлично сохраняется в базу... COVD спасибо за помощь... Ваша строчка стала решающей!!! Добавлено через 2 минуты и 29 секунд ах, да... еще для классика БД я добавила
|
| Автор: LSD 30.1.2008, 13:54 | ||
http://forum.vingrad.ru/forum/topic-24037.html |