1

NetBeans から、組み込みのウ​​ィザードを使用して (jersey を使用して) 新しい REST Web サービスを作成しました。コンテナ リソース クラスでは、スタブを作成し、

@POST
@Consumes("application/json")
@Produces("application/json")
public Response postJson(Identity identity) {
    identities.addIdentity(identity);
    return Response.status(Status.OK).entity(identity).build();
}

これに投稿するにはどうすればよいですか?私の理解では、name=val のペアを投稿する必要があります。ジャージはここで何を期待していますか?curlを使用してこれにjsonを投稿するにはどうすればよいですか? これが私が試したことです、

#!/bin/bash

DATA="{ \"id\": \"$1\", \"vcard\": \"$2\", \"location\": { \"latitude\": \"$3\", \"longitude\": \"$4\" } }"
echo "posting: $DATA"
HEADER='Content-Type:application/json'
URL='http://localhost:8080/contacthi-proximity-service/resources/is'
curl --data-binary "${DATA}" -H "${HEADER}" "${URL}"

これを投稿して、入ってくる ID オブジェクトを見ると、すべてのフィールドが null になっていますか? 私のjsonが間違っていると思われます。オブジェクトをコンテナに手動で追加して get を作成すると、この結果が表示されます。

{"identities":{"id":"Foo Bar","vcard":"VCARD123","location":{"latitude":"-1.0","longitude":"-1.0"}}}

同じものを投稿しようとすると、すべてのフィールドがすべて null になります。私も試しましたが、

{"id":"Foo Bar","vcard":"VCARD123","location":{"latitude":"-1.0","longitude":"-1.0"}}

同じ結果です。

4

1 に答える 1

1

curl を使用してこのメ​​ソッドにリクエストを送信するには、次のようなものを使用する必要があります。

HEADER='--header Content-Type:application/json'
URL='http://localhost:<port>/methodName'
curl --data-binary request.json ${HEADER} ${URL} -D response.txt

メソッドに文字列を渡すことができます。上記のコードは、前述のファイルから json 文字列を選択します。サンプル json は次のようになります。

{"userName":"test","timestamp":"2010-08-05T11:35:32.982-0800","userId":"0982"}

応答を作成するには、次のようなものを使用できます。

return Response.status(Status.OK).entity(responseString).build();

使用されるクラスは次のとおりです。

import javax.ws.rs.core.Response;
import javax.ws.rs.core.Response.Status;
于 2011-01-25T17:58:43.217 に答える