codenameone - 当连接性较差时,CN1 上的请求超时是否有解决方法
问题描述
日志中出现以下错误。我在想这是服务器抛出的超时。但是在服务器上没有设置超时时间。所以我的问题是我们可以在 CN1 上添加一些东西来尝试在一段时间内完成请求(特别是当互联网连接很差时)并重新尝试可用的功能。请指教。
[网络线程] 58:51:51,888 - 请求超时。[网络线程] 58:51:51,898 - 异常:java.io.IOException - 请求超时。java.io.IOException at com_codename1_io_ConnectionRequest.performOperation:884 at com_codename1_io_NetworkManager_NetworkThread.run:325 at com_codename1_impl_CodenameOneThread.run:176 at java_lang_Thread.runImpl:153 [EDT] 58:51:52,3 - 异常:java.lang.IndexOutOfBoundsException - 0 out的:0 java.lang.IndexOutOfBoundsException at java_util_ArrayList.get:328 at .finishAppointment:2737 at _forms_ConfirmationForm.lambda$new$1:145 at forms_ConfirmationForm__Lambda_2。
请参阅随附的服务器通信代码。
ConnectionRequest r = new ConnectionRequest(URL_PREFIX + appName + API_SUFFIX
+ "Verification/apt/" + apt, true) {
@Override
protected void readResponse(InputStream input) throws IOException {
String s = Util.readToString(input);
response.add(s);
}
@Override
protected void buildRequestBody(OutputStream os) throws IOException {
String body = "{ \n"
+ " \"FinishTimeEpoch\":" + retrieveModifiedLongDuration(endTimeFinal) * 60000;
if (startTimeFinal != -1) {
body += ",\n \"StartTimeEpoch\":" + retrieveModifiedLongDuration(startTimeFinal) * 60000;
}
body += "\n}";
if (shouldWriteUTFAsGetBytes()) {
os.write(body.getBytes("UTF-8"));
} else {
OutputStreamWriter w = new OutputStreamWriter(os, "UTF-8");
w.write(body);
}
}
};
r.setHttpMethod("PUT");
r.setContentType("application/json");
r.setFailSilently(true);
r.setReadResponseForErrors(true);
NetworkManager.getInstance().addToQueueAndWait(r);
解决方案
这是一个连接超时,这意味着超时发生在连接到服务器之前。连接时间太长了。
您可以增加超时,但实际上减少它并重试更多可能会更好。您可以在连接请求本身或NetworkManager
全局设置超时设置。见setTimeout
。
推荐阅读
- clojure - Clojure 调用一系列函数并存储它们的返回值
- django - 如何通过 id 在 Django 中加入两个模型?
- vue.js - 更改网址后立即停止观看
- ios - 如何在 SwiftUI 中使用图像 CDN?
- python - 如何在命令行上使用“python -c”缩进
- xcode - 由于 pod 链接错误,Flutter 归档构建失败
- postgresql - 如何从 C 列获取值,其中对应的 A 列值在 postgres 的 B 列中有不同的值?
- c# - 如何在不提取的情况下递归探索 zip 文件内容
- python - 如何在python中更改二维列表的顺序
- dicom - 应该使用什么软拷贝呈现状态?