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 веб сервиса.