Codename One RESTfulWebServiceClient线程
我有一个简单的程序调用rest服务并显示输出。Codename One RESTfulWebServiceClient线程
问题是显示器在休息方法返回之前正在更新。
我试过使用invoke和block,但是.find方法似乎在它自己的线程中运行?异步
Sys输出如下;
之前之后
姓
System.out.println("Before");
userClient = new RESTfulWebServiceClient("http://localhost:8080/MyService/api/person");
Display.getInstance()
.invokeAndBlock(() -> {
userClient.find(
new Query().id("id"), rowset -> {
for (Map m : rowset) {
person = new JSONObject(m);
System.out.println(person.getString("surname"));
}
}
}
System.out.println("After");
我已经找到一个可行的解决方法。
正如我所看到的问题是RESTfulWebServiceClient类的.find方法。该行NetworkManager.getInstance()。addToQueue(req);创建对其余网络服务的异步调用,并在调用之前返回该方法。
为了解决这个问题,我在我的项目中重新创建了RESTfulWebServiceClient类,并从github中复制了源代码。
我再变
NetworkManager.getInstance()addToQueue(REQ)。
到
NetworkManager.getInstance()addToQueueAndWait(REQ)。
这会导致该方法在返回之前完成其余呼叫。
断开链接.... –
谢谢(该死的降价)。在我们的[网络服务向导](https://www.codenameone.com/how-do-i---access-remote-webservices-perform-operations-on-the-server.html)中,我们创建了两个版本方法同步和异步。 –
我认为这可能是原因? 。NetworkManager.getInstance()addToQueue(REQ); –