Java Jersey Web Service:使用JSON请求

时间:2017-01-08 01:36:40

标签: java angularjs json rest jersey

我有一个用Java和Jersey制作的网络服务。我想收到一个JSON请求并解析json以保存数据库上json的值存储。

这是mi网络服务代码:

@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传递给Web服务时遇到的错误:

Status Code:415

这是我发送的请求:

{"company":"Testing2"}

这是我的网络标签:

enter image description here

1 个答案:

答案 0 :(得分:1)

如果没有进一步配置,JSONObject不是Jersey支持的内容。你只需要使用Strings

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

另见: