【发布时间】:2018-12-05 13:16:29
【问题描述】:
我的应用尝试在应用启动时使用RequestBuilder request = Rest.get 发出异步网络请求,如本文所述:https://www.codenameone.com/blog/rest-api-error-handling.html。如果我关闭我的测试服务器,在应用启动时我会遇到这个异常:
[Network Thread] 0:0:0,586 - Exception: java.net.ConnectException - Connection refused
但不会向用户显示任何信息、消息或对话框。 init() 中的以下样板代码未被调用:
addNetworkErrorListener(err -> {
// prevent the event from propagating
err.consume();
if (err.getError() != null) {
Log.e(err.getError());
}
Log.sendLogAsync();
Dialog.show("Connection Error", "There was a networking error in the connection to " + err.getConnectionRequest().getUrl(), "OK", null);
});
如果我使用request.onError(networkError); 提供自定义网络错误处理程序,问题是一样的:我的网络错误处理程序没有被调用。我试图实现它(它与上面的样板代码非常相似):
private static final ActionListener<NetworkEvent> networkError = new ActionListener<NetworkEvent>() {
@Override
public void actionPerformed(NetworkEvent err) {
Log.p("NETWORK ERROR connecting to the server");
err.consume();
if (err.getError() != null) {
Log.e(err.getError());
}
Log.sendLogAsync();
DialogUtilities.genericNetworkError();
}
};
我尝试在服务器离线的情况下使用模拟器。然后我尝试使用 Android 和 iOS 应用程序,断开设备与 Internet 的连接,但在这种情况下也没有向用户发送消息。怎么了?
请注意,与 onErrorCodeBytes、onErrorCodeJSON 和 onErrorCodeString 一起使用的错误代码处理程序似乎可以正常工作(例如,如果我有 404 http 代码,则会调用它们)。
【问题讨论】:
标签: codenameone