如何在Facebook publish方法中动态添加未知数量的参数?
动态添加Facebook Graph API publish方法的附件参数
核心思路是利用Java可变参数的特性(本质为数组),先通过列表动态拼接所有参数,再转为数组传入publish方法:
- 初始化固定参数列表:先把
message、published、scheduled_publish_time这些固定参数加入列表 - 遍历附件动态生成参数:根据附件数量循环生成
attached_media[i]格式的参数,逐个加入列表 - 转为数组传入publish方法:将列表转为
Parameter数组,作为可变参数传入
示例代码
// 1. 创建参数列表,添加固定参数 List<Parameter> params = new ArrayList<>(); params.add(Parameter.with("message", msg)); params.add(Parameter.with("published", "false")); params.add(Parameter.with("scheduled_publish_time", timeStampStr)); // 2. 替换为你的实际附件ID集合(可批量从返回结果中获取) List<String> mediaIds = new ArrayList<>(); mediaIds.add(publishMessageResponseImg1.getId()); mediaIds.add(publishMessageResponseImg2.getId()); // 可继续添加任意数量的附件ID... // 动态生成attached_media参数 for (int i = 0; i < mediaIds.size(); i++) { String mediaJson = String.format("{\"media_fbid\":\"%s\"}", mediaIds.get(i)); params.add(Parameter.with("attached_media[" + i + "]", mediaJson)); } // 3. 转为数组,调用publish方法 GraphResponse publishMessageResponseMSg = facebookClient.publish( "me/feed", GraphResponse.class, params.toArray(new Parameter[0]) );
补充说明
- Java的可变参数
Parameter...本质是Parameter[]数组,因此用List.toArray()可以完美适配publish方法的参数要求 - 若使用Java 8及以上版本,也可以用Stream简化循环逻辑,但上述基础写法兼容性更强、逻辑更直观
内容的提问来源于stack exchange,提问作者user10053673
相关产品推荐
相关产品推荐

