2016-07-20 5 views
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つのファイルに追加して、後でこの問題を確認しました。しかし、この場合もエラーは表示されません。

どのような助けがより受け入れられるでしょうか。

答えて

0

コードネーム1のタイムアウトは現在接続タイムアウトに制限されており、読み取りタイムアウトには適用されないため、接続が確立されると一度だけ終了します。 NetworkManagerの進捗リスナーを使用して、そのような状況を検出して接続を強制終了することができます。

+0

@ Shai-ご意見ありがとうございます。実際には、自分の進捗バーには何もしていません。だからこれに対処する方法は?このタイムアウトの場合、handleExceptionまたはhandleErrorResponseCodeにスローされたエラーはありません。 – Sweety

+0

タイムアウトはこのように問題があり、さまざまなOSで非常に異なる動作をします –

関連する問題