2

私はしばらくの間、この問題を解決しようとしてきましたが、適切に機能させることができないようです。JSONコンテンツを受け入れるこのPOSTサービスがあります:

public static void addLifestyleToRecipes(String categoryMappingList) {
    Logger.info("In RecipeServices--> addLifestyleToRecipes");
    Logger.info("JSON received: %s", categoryMappingList);      
    Type type = new TypeToken<List<CategoryMapping>>() {
    }.getType();
    List<CategoryMapping> categoryMapping = new Gson().fromJson(categoryMappingList, type);

    for (CategoryMapping cat : categoryMapping) {
            //the rest is irrelevant to the problem

}

機能テストでメソッドをテストすると、すべて正常に動作します:

List<CategoryMapping> list = new ArrayList<CategoryMapping>();
list.add(new CategoryMapping(MULTI_LANG_ID, recipes));
list.add(new CategoryMapping(MULTI_LANG_ID, recipes));

String body = new Gson().toJson(list);

Map<String, String> params = new HashMap<String, String>();
params.put("categoryMappingList", body);

StringBuffer url = TestHelper.generateBaseUrl(apiKey, apiVersion);
url.append("/recipes/add/categories");

Response response = POST(url, params);

実際にサービスを呼び出そうとすると問題が発生します。パラメータ「categoryMappingList」は常にnullです。また、Chrome の「Advanced Rest Client」を使用して POST リクエストをシミュレートしようとしましたが、常に同じ結果が得られます。

また、Content-Type を "application/json; charset=utf-8" 以外に指定すると、403 エラーが発生することにも気付きました。

手がかりはありますか?

ありがとう。

4

2 に答える 2

0

機能テストでは、jsonをパラメーターとして追加しています

/recipes/add/categories?categoryMappingList=json

クライアント呼び出しが代わりに本文に投稿している場合、これはcategoryMappingList引数で取得されません。POST本体からjsonを解析するには

categoryMappingList = request.getBody();
于 2012-10-10T10:28:04.710 に答える
0

推測ですが、request().body を調べて、JSON が存在するかどうかを確認しましたか?

于 2012-10-09T20:49:37.530 に答える