IBM MobileFirst 8 Java アダプターに問題があります。application/json を受け入れる簡単な方法があります。アダプターに送信された json が単純な場合、成功します。
{"id":2, "priority": 45}
ただし、json が「複雑」の場合、「失敗」します。
{"id":2, "priority": 45, "list": [{"member": "a"}, {"member":"b"}]}
クライアントは 500 エラーを受け取ります。例外はなく、ログには問題の原因を明らかにするものはありません。
アダプター リソース メソッドは単純です。
@ApiOperation(value = "Post a object", notes = "") @ApiResponses(value = { @ApiResponse(code = 200, message = "Returns the posted object") }) @POST @Consumes("application/json") @Produces("application/json") @Path("/create") public Response create(JSONObject object) { logger.info("Object retrieved"); // Never triggers if "complex" json logger.info(object); return Response.ok(object).build(); }
この問題は、IBM Websphere Liberty で実行されている IBM MobileFirst 8 インスタンスと IBM MobileFirst 8 DevKit の両方で見られます。
これの原因を知っている人、または原因を見つけるために何をすべきかについてのアイデアを持っている人はいますか?
解決策は、メソッドの署名を create(String object) に変更し、その後、次のように json に解析することのようです。
@ApiOperation(value = "Post a object", notes = "")
@ApiResponses(value = { @ApiResponse(code = 200, message = "Returns the posted object") })
@POST
@Consumes("application/json")
@Produces("application/json")
@Path("/create")
public Response create(String object) {
JSONObject json = JSONObject.parse(object);
logger.info("Object retrieved");
logger.info(json);
return Response.ok(json).build();
}
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加