Android rest client + Java rest server

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

Please disable your adblocker or whitelist this site!