我正在尝试使用此 API 向我的 Discourse 论坛服务器发送多条消息:
我的 Java 代码:
public void test()
throws UnirestException, JsonMappingException, JsonProcessingException, InterruptedException {
Unirest.config().cookieSpec(CookieSpecs.IGNORE_COOKIES);
Map<String, String> header = new HashMap<>();
header.put("Content-Type", "application/json");
header.put("Api-Key", [redacted]);
header.put("Api-Username", [redacted]);
header.put("Accept", "application/json");
Unirest.post(URL + "/posts.json")
.headers(header)
.queryString("title","1st Msg")
.queryString("raw", "Message 1")
.queryString("target_recipients", "Kenny")
.queryString("archetype", "private_message")
.asJson();
// TimeUnit.SECONDS.sleep(20);
Unirest.post(URL + "/posts.json")
.headers(header)
.queryString("title","2nd Msg")
.queryString("raw", "Message 2")
.queryString("target_recipients", "Kenny")
.queryString("archetype", "private_message")
.asJson();
}
在上面的测试中,两条消息都已成功发送(没有发生任何异常)。问题是登录 Discourse 帐户后,我只看到收到了第一条消息,但第二条消息丢失了。
后来,我发现如果在它们之间设置 20 秒的延迟(即在注释中),那么服务器才能同时收到两条消息。
有什么问题?
我的版本:
- Discourse 3.1.0.beta2
- Java 11
- unirest-java 3.14.2