0

私はこのコードを持っています

    ClientConfig config = new DefaultClientConfig();
    Client client = Client.create(config);
    client.addFilter(new HTTPBasicAuthFilter(adminUser, adminPass));
    client.addFilter(new LoggingFilter(System.out));

    WebResource service = client.resource(baseURL);
    ClientResponse clientResponse = service.path("api")
            .path("v1")
            .path("shoppers")
            .path(orderId)
            .path("status.json").accept(MediaType.APPLICATION_JSON).post(ClientResponse.class, request);

そのようなJSONリクエストを投稿しようとすると、HTTP 415エラー応答が返されます。この問題を少し掘り下げてみると、JERSEYが私のオブジェクトを適切にマーシャリングしていないことがわかりました。を追加することLoggingFilterで、リクエスト本文で、JAXBObjectがマーシュされたのXMLではなく、マーシュされたことがわかりJSONます。

JERSEYの既知の動作ですか?ここで何をすべきですか?

4

1 に答える 1

1

おそらくtype()、コンテンツタイプを設定するためにリクエストを呼び出す必要があります(Jerseyはこれで何か賢いことをしていると思います):

.path("status.json")
.type(MediaType.APPLICATION_JSON) // <-- This line
.accept(MediaType.APPLICATION_JSON)
.post(ClientResponse.class, request);

他のリソースは、これを手動で行う必要があるかもしれないことを示していますObjectMapper

ObjectMapper mapper = new ObjectMapper();
String jsonStr = mapper.writeValueAsString(jsonObj);
于 2012-09-27T22:33:14.200 に答える