2017-01-08 2 views
2

У меня есть веб-сервис, созданный witj Java и Jersey. Я хочу получить запрос JSON и проанализировать json для сохранения значений в json в базе данных.Java Jersey Web Service: потребляйте запрос 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"} 

Это моя вкладка Сеть:

enter image description here

+0

мм это выглядит странно .. я немного исследовал код ошибки 415 .. и похоже, что формат не поддерживается. Итак, вы уверены в том, как вы устанавливаете тип json вашего задний конец api? возможно, с чем-то вроде @Consumes ({MediaType. APPLICATION_JSON, MediaType. APPLICATION_JSON}) –

+0

Я пробовал с @Consumes ({MediaType. APPLICATION_JSON, MediaType. APPLICATION_JSON}), но я получаю ту же ошибку – proktovief

+0

мм выглядит странно причиной Angular $ http .post отправить по умолчанию json ... так что я могу догадаться, что проблема в конфигурации конца. Но я не знаю java :-) –

ответ

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 вы можете проверить this post.

Смотрите также:

  • JAX-RS Entity Providers, чтобы узнать, как Джерси ручки сериализации десериализации.
+0

Да, я работаю, я проверю сообщение JAX-RS Entity Providers, чтобы реализовать его. Благодаря! – proktovief