Android rest client + Java rest server

В сети можно найти много статей по теме Android Rest Client и Java Rest Server. Но очень мало статей, которые содержат готовый пример Android клиента и Java сервера в связке. Это мы сейчас и исправим.

Android rest client:
Для начала добавим в проект библиотеку Android Asynchronous Http Client Library.

Этот крошечный участок кода и отвечает за клиентский запрос.

//параметры запроса
RequestParams params = new RequestParams();
//для примера, строковый параметр
params.put("ip", "192.168.1.1");
//для примера, строковый параметр
params.put("destination", "192.168.5.199");
AsyncHttpClient client = new AsyncHttpClient();
//выполняем POST запрос
client.post("http://192.168.5.199:8084/RestApplication/requestFile/new",params ,new TextHttpResponseHandler(){
     @Override
     public void onSuccess(int statusCode, Header[] headers, String responseBody) {
         try {
             //парсим ответ в JSON объект
             JSONObject obj = new JSONObject(responseBody);
             if(obj.getBoolean("status")){
             .....
             } 
             else{
             ..... 
             }
         } catch (JSONException e) {
             Log.e(TAG,"onFailure "+e.printStackTrace());
         }
     }
     @Override
     public void onFailure(int statusCode, Header[] headers, String response, Throwable e) {
         Log.e(TAG,"onFailure "+e.printStackTrace());
     }
});

Код веб сервиса:
Мы объявляем путь через дескрипторы @Path, указываем тип запроса POST. Дескрипторы @Produces и @Consumes отвечают за тип принимаемых и возвращаемых данных. Далее мы просто парсим входной параметр в виде объекта String в объект JSONObject


import java.util.logging.Level;
import java.util.logging.Logger;
import javax.ws.rs.Consumes;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.*;
import org.json.JSONException;
import org.json.JSONObject;

/**
*
* @author Тимур
*/
@Path("request")
public class RequestWithMyIp {

    @POST
    @Path("client")
    @Produces(MediaType.APPLICATION_JSON)
    @Consumes(MediaType.APPLICATION_JSON)
    public Response uploadFile(String data){
        if(data!=null ){
           //отладочная инструкция
           System.out.println(data);
           try {
               JSONObject object = new JSONObject(data);
               //получаем объект(для примера)
               String ip = object.getString("ip");
               //получаем массив объектов типа String(для примера)
               String[] destination = object.getString("destination");

               ...
           }catch (JSONException ex) {
              Logger.getLogger(RequestWithMyIp.class.getName()).log(Level.SEVERE, null, ex);
           }
        }
        //Возвращаем статус ответа
        return Response.status(200).entity("").build();
    }
}

Вот и все. Мы описали создание Android Rest клиента и Java Rest веб сервиса.

Leave a Reply

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.