我一直试图解决这个问题一段时间,我似乎无法让它正常工作。我有这个接受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的“高级休息客户端”来模拟POST请求,但我总是得到相同的结果。
我还注意到,如果我将Content-Type指定为“application / json; charset = utf-8”,则会收到403错误。
任何线索?
感谢。
答案 0 :(得分:0)
只是一个猜测,但你看过请求()。身体,看看你的JSON是否存在?
答案 1 :(得分:0)
在功能测试中,您将json添加为参数
/recipes/add/categories?categoryMappingList=json
如果您的客户呼叫是在正文中发布,则不会在 categoryMappingList 参数中选择。从POST正文解析json
categoryMappingList = request.getBody();