أحاول إرسال أكثر من رسالة واحدة إلى خادم منتدى Discourse الخاص بي باستخدام واجهة برمجة التطبيقات هذه:
رموز جافا الخاصة بي:
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