Я пытаюсь создать службу REST, которая будет принимать в JSON как входной сигнал в методе POST
. Затем служба сохранит это в DB и возвращает ответ. Я создал класс под названием jsonFormat, как это было сделано в этом question. Код для этого класса -Неподдерживаемый тип носителя - служба REST
import javax.xml.bind.annotation.XmlRootElement;
/**
*
* @author Aj
* This class forms the format of the JSON request which will be recieved from the App
*/
@XmlRootElement
public class JsonFormat {
public double longitude;
public double latitude;
public long IMSI;
public JsonFormat(){}
public JsonFormat(double longitude,double latitude, long IMSI){
this.longitude = longitude;
this.latitude = latitude;
this.IMSI = IMSI;
}
}
Однако, я все еще получаю неподдерживаемый тип носителя HTTP 415 ответ.
Я тестирую, используя POSTMAN для хром.
Вот мой код для реализации службы -
import javax.ws.rs.core.Context;
import javax.ws.rs.core.UriInfo;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.Consumes;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PUT;
import javax.ws.rs.POST;
import org.json.simple.JSONObject;
/**
* REST Web Service
*
* @author Aj
*/
@Path("Offers")
public class OffersResource {
@Context
private UriInfo context;
/**
* Creates a new instance of OffersResource
*/
public OffersResource() {
}
@Path("/storeMovement")
@POST
@Consumes("application/json")
@Produces("application/json")
public String storeTrace(JsonFormat jsonObj) {
JSONObject response = new JSONObject();
String ret = "";
try {
RecordMovement re = new RecordMovement(jsonObj.longitude, jsonObj.latitude, jsonObj.IMSI);
ret = re.Store();
// Clear object
re = null;
System.gc();
response.put("status", ret);
} catch (Exception e) {
response.put("status", "fail");
}
return response.toJSONString();
}
/**
* PUT method for updating or creating an instance of OffersResource
*
* @param content representation for the resource
* @return an HTTP response with content of the updated or created resource.
*/
@PUT
@Consumes("application/json")
public void putJson(String content) {
}
}
JSON, который я передаю это - {"longitude": "77.681307", "latitude": "12.8250278", "IMSI": "404490585029957"}
При подаче запроса я удостоверился, чтобы установить тип в POST
а Правильный URL (http://localhost:8080/Offers/webresources/Offers/storeMovement
).
Может кто-нибудь, пожалуйста, взгляните и сообщите, что я делаю неправильно? Я прошел через несколько сайтов, где ошибка связана главным образом с тем, что не задан тип контента, но это явно не так!
Просто заметив, что вы используете @XmlRootElement для класса, работающего с json. Но вам, вероятно, понадобится парсер, например, Джексон для вашего класса JsonFormat. –
@AndreasGnyp Вы хотите использовать ObjectMapper от Jackson в конструкторе моего класса JSONFormat? –
Да. Я использовал его с методами, но он мог работать и с конструктором. Возможно, вам также придется написать картографию самостоятельно. –