Веб-служба Java-Джерси: запрос JSON
У меня есть веб-сервис с Java и Джерси. Я хочу получить запрос JSON и проанализировать JSON для сохранения значений в JSON в базе данных.
Это код веб-службы:
@Path("companies")
public class Companies {
@Path("add")
@POST
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
public JSONObject addCompanies(JSONObject inputJsonObj){
String input = (String) inputJsonObj.get("company");
String output = "The input you sent is :" + input;
JSONObject outputJsonObj = new JSONObject();
outputJsonObj.put("output", output);
return outputJsonObj;
}
}
Клиентская часть сделана с AngularJS:
$scope.company = "";
$scope.submit = function(){
// Writing it to the server
//
var dataObj = {
company : $scope.company
};
var res = $http.post('http://localhost:8080/WS-Test2/crunchify/companies/add', dataObj);
res.success(function(data, status, headers, config) {
$scope.message = data;
notify("succes");
});
res.error(function(data, status, headers, config) {
//alert( "failure message: " + JSON.stringify({data: data}));
notify("fail");
});
};
Это ошибка, которую я получаю, когда передаю JSON веб-службе:
Status Code:415
И это запрос, который я отправляю:
{"company":"Testing2"}
Это моя вкладка Сеть:
1 ответ
Решение
Без дальнейшей настройки, JSONObject
Джерси не поддерживает Вам просто нужно будет работать со строками
public String addCompanies(String json){
JSONObject inputJsonObj = new JSONObject(json)
String input = (String) inputJsonObj.get("company");
String output = "The input you sent is :" + input;
JSONObject outputJsonObj = new JSONObject();
outputJsonObj.put("output", output);
return outputJsonObj.toString();
}
Если вы действительно хотите использовать JSONObject
Вы можете проверить этот пост.
Смотрите также:
- JAX-RS Entity Provider, чтобы узнать, как Джерси обрабатывает сериализацию и десериализацию.