2016-12-08 10 views
1

私が検証されている以下のJSONは、JsonLintを使用していますCygwinのHTTP PUTリクエストでJSONをメッセージ本体として追加しますか?

{ 
     "names": [ 
      { 
       "id":"123", 
       "name":"stubName", 
       "type":"stubType", 
      } 
     ] 
    } 

私は私が書いたRESTハンドラをテストするために(Cygwinを使用して)私のCURLコマンドでメッセージ本文としてそれを追加したいと思います。私は現在、私はthis answer読んでから作成し、このコマンドを、使用しています

curl -H "Content-Type: application/json" -X PUT -d '{ 
     "names": [ 
      { 
       "id":"123", 
       "name":"StubName", 
       "type":"StubType", 
      } 
     ] 
    }' localhost:9980/Id/123/version/123/addPerson 

私のハンドラは、次のとおりです。

  @PUT 
      @Consumes("application/json") 
      @Path("/Id/{Id}/version/{version}/addPerson") 
      public Response addPerson(@PathParam("Id") String Id, 
                @PathParam("version") String version, 
                @Context List<Name> names) { 

      LOGGER.info("NAMES PASSED : {}", names.toString()); 

    } 

私は私が手CURLを使用して、私の方法をヒットしてみてくださいHTTP 400方法。

編集:names.toString()を実行しようとすると、nullポインタが返されます。つまり、名前リストはnullでなければなりません。

+0

を送る '{}なさい' URL –

+0

で有効な文字ではありません私はあなたの代わりにカールポストマンのアプリを使ってみてお勧めする、あまりにも –

+0

cricket_007 @申し訳ありません私は誤って、私が使用している実際のパスを参照してください。 – java123999

答えて

1
  1. @Contextエンティティボディ(パラメータ)は注釈なしである必要があります。あなたはJSON配列を送信する必要がありますList<Name>

    public Response addPerson(@PathParam("Id") String Id, 
              @PathParam("version") String version, 
              List<Name> names) { 
    
  2. {"names":を取り除き、そしてちょうど[]

    curl -H "Content-Type: application/json" -X PUT -d '[ 
        { 
         "id":"123", 
         "name":"StubName", 
         "type":"StubType", 
        } 
    ]' localhost:9980/Id/123/version/123/addPerson 
    
+0

ありがとう、サンプルコードの変更をしてください回答では、 – java123999

+0

問題が解決しました。 – java123999

関連する問題