Ich habe versucht, keine der Web-Services in einer sequentiellen Weise wie eins nach dem anderen wie unten aufrufen. Sobald alle Webdienste erfolgreich ausgeführt wurden, ist die Aufgabe beendet. Wenn nicht, dann muss die Warnung dem Benutzer angezeigt werden.Netzwerk-Anfrage Timeout oder Netzwerk verloren oder langsam Netzwerk nicht richtig behandeln in Codenameone
Code:
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","Process Done","OK",null);
}
else{
Dialog.show("FAIL","Process 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;
}
Immer, wenn ich Prozess im vollen Netzwerk zu synchronisieren versuchen es funktioniert wie aspected in Ordnung.
Wenn das Netzwerk jedoch langsam läuft oder verloren geht, wird es den Benutzer normalerweise nicht auf das Problem aufmerksam machen. Stattdessen bleibt es einfach beim Prozessdialog.
Ich habe Fehlerprotokoll in einer Datei hinzugefügt, um später auf das Problem zu überprüfen. Aber das zeigt auch keinen Fehler in diesem Fall.
Jede Hilfe wird deutlicher.
@ Shai-Danke für den Vorschlag. Eigentlich habe ich meine eigene Fortschrittsleiste ohne Aktion. Also, wie geht man damit um? Und in diesem Fall des Timeouts wird kein Fehler in handleException oder handleErrorResponseCode ausgelöst. – Sweety
Timeout ist auf diese Weise problematisch, es verhält sich in den verschiedenen Betriebssystemen sehr unterschiedlich –