В GWT есть инструмент для отправки запросов на серевер - это RequestBuilder. При помощи RequestBuilder'а мы можем отправлять REST-запросы на сервер. Работать с RequestBuilder очень просто. Для того чтобы создать объект RequestBuilder, необходимо вызвать конструктор с двумя параметрами.
url -адрес, по которому отправляется запрос.
Запрос, отправляемый на сервер может быть отправлен при помощи следующих методов
RequestBuilder.POST - добавление данных
RequestBuilder.GET - получение данных
RequestBuilder.PUT - изменение данных
RequestBuilder.DELETE - удаление данных
1. Добавить к запросу заголовок
Заголовков может быть несколько
2. Добавить к запросу данные, которые будут отправляться на сервер
3. Установить к запросу callback - ответ, который придет пользователю от сервера после того, как сервер обработает запрос от пользователя.
В методе setCallback создаем анонимный класс RequestCallback и переопределяем в нем два метода: onResponseReceived и onError
В методе onResponseReceived обрабатываем ту ситуацию, когда сервер удачно обработал запрос и вернул ответ клиенту
В методе onError обрабатываем ситуацию, если возникла ошибка в результате выполнения запроса
4. Отправляем запрос на сервер
Отправляем запросы на сервер при помощи REST методов. Запросы обрабатываются при помощи REST-методов, но об этом уже в другой моей статье
GET-запрос на сервер с помощью RequestBuilder'а реализуется таким же образом, как и POST-запрос, только в GET-запросе мы не отправляем никаких данных на сервер, поэтому мы не добавляем к запросу данные и не вызываем метод
requestBuilder.setRequestData(String requestData);
RequestBuilder requestBuilder = new RequestBuilder(httpMethod, url);httpMethod - метод, который используется запросом при обращении к серверу
url -адрес, по которому отправляется запрос.
Запрос, отправляемый на сервер может быть отправлен при помощи следующих методов
RequestBuilder.POST - добавление данных
RequestBuilder.GET - получение данных
RequestBuilder.PUT - изменение данных
RequestBuilder.DELETE - удаление данных
Методы RequestBuilder
1. Добавить к запросу заголовокЗаголовков может быть несколько
requestBuilder.setHeader(String header, String value);
2. Добавить к запросу данные, которые будут отправляться на сервер
requestBuilder.setRequestData(String requestData);
3. Установить к запросу callback - ответ, который придет пользователю от сервера после того, как сервер обработает запрос от пользователя.
В методе setCallback создаем анонимный класс RequestCallback и переопределяем в нем два метода: onResponseReceived и onError
requestBuilder.setCallback(new RequestCallback() { @Override public void onResponseReceived(Request request, Response response) { } @Override public void onError(Request request, Throwable exception) { } });
В методе onResponseReceived обрабатываем ту ситуацию, когда сервер удачно обработал запрос и вернул ответ клиенту
В методе onError обрабатываем ситуацию, если возникла ошибка в результате выполнения запроса
4. Отправляем запрос на сервер
requestBuilder.send();
Отправляем запросы на сервер при помощи REST методов. Запросы обрабатываются при помощи REST-методов, но об этом уже в другой моей статье
RequestBuilder POST-запрос
// Создаем строку, в которую записываем адрес, // по которому будем посылать запрос String url = "/rest/cars/paginatedCars"; // Создаем объект requestBuilder // С помощью этого объекта будем посылать запросы // В конструкторе указываем тип метода - POST и адрес, // по которому будем отправлять запрос RequestBuilder requestBuilder = new RequestBuilder(RequestBuilder.POST, url); // Задаем заголовок запросу, в котором указываем тип данных, // которые будем передовать. В этом запросе мы передаем JSON requestBuilder.setHeader("Content-Type", "application/json"); // Подготавливаем данные, // которые будем отправлять на сервер AutoBean<IPaginatedResultDto> bean = AutoBeanUtils.getAutoBean(paginatedResDTO); // Прикрепляем к запросу данные, которые будем отправлять requestBuilder.setRequestData(AutoBeanCodex.encode(bean).getPayload()); // Устанавливаем для запроса callBack - ответ, который // придет пользователю от сервера после выполения запроса на сервере requestBuilder.setCallback(new RequestCallback() { // Обрабатываем удачное выполнение запроса и определяем, // какие данные будем брать из ответа от сервера и // показывать пользователю @Override public void onResponseReceived(Request request, Response response) { // Получаем тект из ответа от сервера // и преобразуем его в нужные нам данные IPaginatedResultDto dto = DtoUtils.pagResJsonToDtoList( response.getText()); getView().pageLoaded(dto); List<T> dtoList = DtoUtils.pagResListJsonToDtoList( response.getText(), clazz); dataProvider.getList().clear(); dataProvider.getList().addAll(dtoList); dataProvider.flush(); screenBlocker.getView().hide(); } // Обрабатываем ошибку, которая может // возникнуть в ходе выполнения запроса @Override public void onError(Request request, Throwable exception) { screenBlocker.getView().hide(); // Выводим сообщение об ошибке Window.alert(exception.getMessage()); } }); try { // Отправляем запрос на сервер requestBuilder.send(); } catch (RequestException e) { e.printStackTrace(); }
RequestBuilder GET-запрос
requestBuilder.setRequestData(String requestData);
// Отправляем GET-запрос на сервер String url = "/rest/car/getCurrentCar"; RequestBuilder requestBuilder = new RequestBuilder(RequestBuilder.GET, url); requestBuilder.setHeader("Content-Type", "application/json"); requestBuilder.setCallback(new RequestCallback() { @Override public void onResponseReceived(Request request, Response response) { JSONValue jsonValue = JSONParser.parseStrict(response.getText()); AutoBean<IUserDto> bean = AutoBeanCodex.decode( DtoUtils.getTruckingFactory(), IUserDto.class, jsonValue.toString()); getView().setCurrentDto(bean.as()); getView().fillForm(bean.as()); } @Override public void onError(Request request, Throwable exception) { exception.getMessage(); } }); try { requestBuilder.send(); } catch (RequestException e) { e.printStackTrace(); }
Комментариев нет:
Отправить комментарий