2017-01-08 5 views
2

私はWebサービスをwitj JavaとJerseyで作っています。私は、JSONリクエストを受け取り、データベースのjsonに値ストアを保存するためにjsonを解析したいと思います。JavaジャージーWebサービス:JSONリクエストを消費する

これでマイルのウェブサービスコード:クライアント側がAngularJSで作られて

@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; 
    } 
} 

:私は、WebサービスにJSONを渡すとき

$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"); 
     }); 
    }; 

これは私が得ているエラーがあります:

Status Code:415 

そして、これは私が送りますリクエストです:

{"company":"Testing2"} 

これは私のネットワークタブである:設定なし

enter image description here

+0

mmそれは異常です。私はエラーコード415についての少しの研究を行っています..フォーマットがサポートされていないように見えます。あなたはあなたのjsonタイプをどのように設定するのですか?バックエンドAPI? –

+0

@Consumes({MediaType。APPLICATION_JSON、MediaType。APPLICATION_JSON})を試しましたが、同じエラーが発生しています。 – proktovief

+0

mmが奇妙な原因に見えます。$ http http://www.windowsfiles.com/、 .postはデフォルトのjsonを送信します...だから、バックエンドの設定に問題があると推測できます。しかし、私はjavaを知らない:-) –

答えて

1

JSONObjectはジャージーがサポートしているものではありません。あなたは本当にあなたがthis postをチェックアウトすることができ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(); 
} 

で作業する必要があるだけでしょう。

関連項目:

  • JAX-RS Entity Providersがどのようジャージーハンドルのシリアライズ、デシリアライゼーション学びます。
+0

はい、動作していますが、実装するためにJAX-RSエンティティプロバイダがポストします。ありがとう! – proktovief

関連する問題