【发布时间】:2021-04-03 08:13:05
【问题描述】:
我在从 java 执行 post 调用时遇到问题。但是我可以从 Postman 执行相同的操作。 对于我的休息呼叫内容正文应该是这样的
{"group": "group1","users": ["Z123456","a123456","x123456"]}
为此,我创建了一个这样的 pojo:
public class GroupUserMapping {
String group;
ArrayList<String> users;
}
在代码中我创建了一个方法来像这样向这个 pojo 添加对象
ArrayList<GroupUserMapping> usergroups = new ArrayList<>();
//some conditions
GroupUserMapping groupUserMapping = new GroupUserMapping(group,users);
usergroups.add(groupUserMapping);
现在对于所有这些对象,我需要调用其余的 API
usergroups.stream().parallel().forEach(ausergroup -> {
try {
CloseableHttpClient client = HttpClients.createDefault();
HttpPost httpPost = new HttpPost(url);
Gson gson = new Gson();
String base64 = basicEncode();
httpPost.addHeader("Authorization", base64);
httpPost.setHeader("Content-type", "application/json");
StringEntity entity = new StringEntity(gson.toJson(ausergroup.toString()));
httpPost.setEntity(entity);
HttpResponse response = client.execute(httpPost);
} catch (Exception e) {
e.printStackTrace();
}
});
执行此操作后,我收到 400 错误代码。请帮我解决这个问题?
谢谢。
【问题讨论】:
-
你确定你使用
ausergroup.toString()? -
是的。我正在使用 ausergroup.toString()
-
您是否覆盖了
GroupUserMapping的toString方法?为什么要使用toString()方法? -
据我在Gson doc API 中看到的,您应该能够在不调用 .toString() 的情况下通过
ausergroup -
是的。当我删除 tostring 方法时它起作用了。谢谢你:)
标签: java json rest post httpclient