Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Client - Server, Запрос - Ответ 
V
    Опции темы
SerjogaVS
Дата 17.5.2010, 02:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 8.1.2007
Где: Нюрнберг

Репутация: нет
Всего: нет



Здравствуйте,
мне надо для уни сделать лабораторную работу по java. Нужно создать простое client - server соединение и показать как они работают на примере online shop. Никакого php, ни вебсервера не надо, чисто ява. Client использует HttpURLConnection, а server сокеты.
Моя проблема в том, что не знаю как конкретно обрабатывать запросы и ответы при помощи GET, PUT, POST, DELETE.
Допустим я покупаю двд диск с номером 12345. Отправляю серверу эту информацию, сервер ее получает, кладет мой диск в корзину и говорит мне сколько элементов в моей корзине. 
Как я понимаю, тут надо использовать POST и передать в качестве параметра номер диска. Вот как я пытался это сделать:

Код

// Client
URL url = new URL("http://localhost:8060/");
HttpURLConnection connection = (HttpURLConnection) url
                    .openConnection();
connection.setRequestMethod("POST");
connection.setDoOutput(true);
connection.setReadTimeout(1000);
connection.connect();
 BufferedWriter wr = new BufferedWriter(new OutputStreamWriter(
                    connection.getOutputStream()));
String data = URLEncoder.encode("nomer", "UTF-8") + "="
                    + URLEncoder.encode("12345", "UTF-8");
wr.write(data);
wr.write("\n");
wr.flush();

reader = new BufferedReader(new InputStreamReader(connection
                    .getInputStream())); // В этом месте у меня зависает client
//////////////////////////////////////////////////////////
// Server
//
// Read a message sent by client application
//
BufferedReader reader = new BufferedReader(new InputStreamReader(socket
                    .getInputStream()));
String line;
while((line = reader.readLine()) != null) {
  System.out.println(line + "\n");
}
reader.close();


Как мне правильно на сервере получить передачу от клиента, как я проверю какая эта передача (GET, POST...) и как ему ответить?
Спасибо заранее.

PM MAIL   Вверх
AntonSaburov
Дата 17.5.2010, 12:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

Репутация: 2
Всего: 118



PM MAIL WWW ICQ   Вверх
SerjogaVS
Дата 17.5.2010, 21:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 8.1.2007
Где: Нюрнберг

Репутация: нет
Всего: нет



Спасибо, думаю найду там то, что мне надо!
PM MAIL   Вверх
SerjogaVS
Дата 27.5.2010, 17:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 8.1.2007
Где: Нюрнберг

Репутация: нет
Всего: нет



Так у меня и ничего не получилось :(
При чтении сервер зависает.  Чего не хватает?

// Client
Код

URL url = new URL("http://localhost:8060");
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setDoOutput(true);

OutputStreamWriter wr = new OutputStreamWriter(connection.getOutputStream());

String msg = "test";
wr.write(temp);
wr.write("\n");
wr.flush();
wr.close();

BufferedReader reader = new BufferedReader(new InputStreamReader(connection
                    .getInputStream()));
String inputLine;
            
while ((inputLine = reader.readLine())!= null)
      System.out.println(inputLine);
reader.close();


// Server
Код

Server serverSocket = new ServerSocket(8060);
Socket socket = serverSocket.accept();

BufferedReader reader;

reader = new BufferedReader(new InputStreamReader(socket
                    .getInputStream()));

String line = null;
while ((line = reader.readLine()) != null) {
    System.out.println(line + "\n");
    
reader.close();

Сервер читает всю информацию и слово test и на этом зависает, т.е. в reader.close() он даже не заходит. Может кто знает, что я не так делаю? 
PM MAIL   Вверх
Kircul
Дата 27.5.2010, 18:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 166
Регистрация: 20.2.2007

Репутация: нет
Всего: 7



А обязятельно использовать HttpURLConnection? У апача есть такой проект commons-httpclient (очень удобный API).
PM   Вверх
SerjogaVS
Дата 27.5.2010, 18:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 8.1.2007
Где: Нюрнберг

Репутация: нет
Всего: нет



Цитата(Kircul @ 27.5.2010,  18:04)
А обязятельно использовать HttpURLConnection? У апача есть такой проект commons-httpclient (очень удобный API).

да, к сожалению обязательно. Client - HTTPUrlConnection, Server - Socket.
PM MAIL   Вверх
SerjogaVS
Дата 27.5.2010, 20:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 8.1.2007
Где: Нюрнберг

Репутация: нет
Всего: нет



в общем добился я чтобы сервер читал сообщение от клиента. 
заменил только это строку
Код

while ((line = reader.readLine()) != null) {
    System.out.println(line + "\n"); }

на эту
Код

while (reader.ready()) {
    System.out.println(reader.readLine() + "\n"); }


теперь я не могу отправить клиенту ответ... виснет теперь он при чтении  smile 
Может кто-нибудь пожалуйста помочь, время поджимает сильно....  smile 
PM MAIL   Вверх
SerjogaVS
Дата 29.5.2010, 09:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 8.1.2007
Где: Нюрнберг

Репутация: нет
Всего: нет



спасибо всем, я разобрался. 
PM MAIL   Вверх
major32
Дата 22.6.2010, 08:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 9.4.2010

Репутация: нет
Всего: нет



В чем трабла то была ? отпишите .....
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Работа с сетью | Следующая тема »


 




[ Время генерации скрипта: 0.0473 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.