我有以下用于访问网络资源的Codename One代码。它几乎是这个用例的Codename One教程的精确副本。
public void executeRequest(){
String url = "http://www.random.net";
InfiniteProgress prog = new InfiniteProgress();
final Dialog dlg = prog.showInifiniteBlocking();
ConnectionRequest r = new ConnectionRequest() {
@Override
protected void postResponse() {
//handle changes to my form
}
@Override
protected void readResponse(InputStream input)
throws IOException {
//handle parsing data
}
@Override
protected void handleIOException(IOException err) {
super.handleIOException(err);
}
};
r.setUrl(url);
r.setPost(false);
r.addArgument("arg", "2");
r.setDuplicateSupported(true);
r.setDisposeOnCompletion(dlg);
NetworkManager.getInstance().addToQueue(r);
}
我第一次运行它 - 没问题。如果我尝试通过再次调用相同的方法来“刷新”我的数据,应用程序将挂起InfiniteProgress对话框永远旋转。它几乎就像第一个网络请求永远不会真正完成,然后是第二种类型的冲突。我有什么想法我做错了吗?
答案 0 :(得分:0)
默认情况下,禁用对完全相同的URL的重复请求,尝试在连接请求上调用setDuplicatesSuppotred(true)
。
答案 1 :(得分:0)
为了将来的参考,为我解决的问题是使用
NetworkManager.getInstance()addToQueueAndWait(R);
代替。这解决了我的大部分问题。
答案 2 :(得分:0)
我坚持同样的问题,但解决方案都没有奏效。但是,我是这样做的:
final NetworkManager nm = NetworkManager.getInstance();
nm.setTimeout(3000);
然后
protected void postResponse() {
...
nm.shutdown();
}
并且打电话为
nm.addToQueueAndWait(request);
也许NetworkManager最终成功完成了这项工作,但我肯定会把“关机”放进去。它对我有用