1
以下のように順次Webサービスを呼び出すようにしました。すべてのWebサービスが正常に実行されると、タスクは終了します。そうでなければ、ユーザーにアラートを表示する必要があります。ネットワークリクエストのタイムアウトまたはネットワークの損失または低速ネットワークがcodenameoneで適切に処理されない
コード:私はaspectedとして、それが正常に動作し、完全なネットワーク内のプロセスを同期しようとしていますたび
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;
}
。
しかし、処理中にネットワークが遅くなったり紛失したりすると、ユーザーに警告する傾向がありません。代わりに、プロセスダイアログに固執します。
エラーログを1つのファイルに追加して、後でこの問題を確認しました。しかし、この場合もエラーは表示されません。
どのような助けがより受け入れられるでしょうか。
@ Shai-ご意見ありがとうございます。実際には、自分の進捗バーには何もしていません。だからこれに対処する方法は?このタイムアウトの場合、handleExceptionまたはhandleErrorResponseCodeにスローされたエラーはありません。 – Sweety
タイムアウトはこのように問題があり、さまざまなOSで非常に異なる動作をします –