2012-10-09 71 views
2

我一直在試圖解決這個問題一段時間,現在我似乎無法使其正常工作。我有一個不接受JSON內容這個POST服務:發佈JSON與播放1.2.4

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 

} 

當我測試方法與functionnal測試,一切正常:

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」始終爲空。我也嘗試使用Chrome的「高級休息客戶端」來模擬POST請求,但我總是得到相同的結果。

我還注意到,如果我指定我的Content-Type是「application/json; charset = utf-8」之外的任何東西,則會出現403錯誤。

任何線索?

謝謝。

+0

您可以添加調用服務的客戶端代碼 –

回答

0

在你的功能測試要添加的JSON作爲參數

/recipes/add/categories?categoryMappingList=json 

如果您的客戶端調用,而不是在身體這不會在categoryMappingList說法有所回升張貼。解析來自POST機構的json

categoryMappingList = request.getBody(); 
0

只是猜測,但你看看請求()身體,看看你的JSON是否在那裏?