菜鸟教程小白 发表于 2022-12-11 17:01:19

java - 网络请求超时或网络丢失或网络速度慢在代号中无法正确处理


                                            <p><p>我尝试按如下顺序依次调用任何 Web 服务,如下所示。一旦所有 Web 服务成功运行,任务就结束了。如果没有,则必须向用户显示警报。</p>

<p>代码:</p>

<pre><code>Dialog progressDialog = ComponentUtils.getFormattedDialog(new Dialog());
progressDialog.showModeless();

boolean allDone = true;

for(int i=0;i&lt;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(&#34;SUCCESS&#34;,&#34;Process Done&#34;,&#34;OK&#34;,null);
}
else{
    Dialog.show(&#34;FAIL&#34;,&#34;Process Failed&#34;,&#34;OK&#34;,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+ &#34; &gt; handleErrorResponseCode&#34;);
            isSuccess = false
      }

      @Override
      protected void handleException(Exception err) {
            this.kill();
            LogUtil.setErrorLog(err,page_name + &#34; &gt; handleException&#34;);
            isSuccess = false
      }

      @Override
      protected void readResponse(InputStream input){
            isSuccess = true
      }
    };

    connectionRequest.setUrl(serviceUrl);
    connectionRequest.setContentType(&#34;application/x-www-form-urlencoded&#34;);
    connectionRequest.setPost(true);
    connectionRequest.setDuplicateSupported(true);
    connectionRequest.setTimeout(100000);
    NetworkManager.getInstance().addToQueueAndWait(connectionRequest);

    return isSuccess;
}
</code></pre>

<p>每当我尝试在整个网络中同步进程时,它都可以正常工作。</p>

<p>但在此过程中,如果网络运行缓慢或丢失,则不会提醒用户注意该问题。相反,它只是停留在进程对话框上。</p>

<p>我在一个文件中添加了错误日志,以便稍后检查问题。但在这种情况下也没有显示任何错误。</p>

<p>任何帮助都会更有意义。</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>Codename One 中的超时当前仅限于连接超时,不适用于读取超时,因此一旦建立连接,它将持续存在。您可以在 <code>NetworkManager</code> 上使用进度监听器来检测此类情况并终止连接。 </p></p>
                                   
                                                <p style="font-size: 20px;">关于java - 网络请求超时或网络丢失或网络速度慢在代号中无法正确处理,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/38475063/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/38475063/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: java - 网络请求超时或网络丢失或网络速度慢在代号中无法正确处理