我尝试按如下顺序依次调用任何 Web 服务,如下所示。一旦所有 Web 服务成功运行,任务就结束了。如果没有,则必须向用户显示警报。
代码:
Dialog progressDialog = ComponentUtils.getFormattedDialog(new Dialog());
progressDialog.showModeless();
boolean allDone = true;
for(int i=0;i<serviceList.size();i++){
String serviceUrl = serviceList.get(i);
boolean service = getServiceResponse(serviceUrl);
if(service==false){
progressDialog.dispose();
allDone = false;
break;
}
}
if(allDone){
progressDialog.dispose();
Dialog.show("SUCCESS","rocess Done","OK",null);
}
else{
Dialog.show("FAIL","rocess Failed","OK",null)
}
...
public static boolean getServiceResponse(String serviceUrl){
boolean isSuccess = false;
ConnectionRequest connectionRequest = new ConnectionRequest() {
@Override
protected void handleErrorResponseCode(int code, String message) {
this.kill();
LogUtil.setErrorLog(message,page_name+ " > handleErrorResponseCode");
isSuccess = false
}
@Override
protected void handleException(Exception err) {
this.kill();
LogUtil.setErrorLog(err,page_name + " > handleException");
isSuccess = false
}
@Override
protected void readResponse(InputStream input) {
isSuccess = true
}
};
connectionRequest.setUrl(serviceUrl);
connectionRequest.setContentType("application/x-www-form-urlencoded");
connectionRequest.setPost(true);
connectionRequest.setDuplicateSupported(true);
connectionRequest.setTimeout(100000);
NetworkManager.getInstance().addToQueueAndWait(connectionRequest);
return isSuccess;
}
每当我尝试在整个网络中同步进程时,它都可以正常工作。
但在此过程中,如果网络运行缓慢或丢失,则不会提醒用户注意该问题。相反,它只是停留在进程对话框上。
我在一个文件中添加了错误日志,以便稍后检查问题。但在这种情况下也没有显示任何错误。
任何帮助都会更有意义。
Codename One 中的超时当前仅限于连接超时,不适用于读取超时,因此一旦建立连接,它将持续存在。您可以在 NetworkManager
上使用进度监听器来检测此类情况并终止连接。
关于java - 网络请求超时或网络丢失或网络速度慢在代号中无法正确处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38475063/
欢迎光临 OGeek|极客世界-中国程序员成长平台 (https://ogeek.cn/) | Powered by Discuz! X3.4 |