我正在使用改造版本 2.3.0 和 OkHttp 版本 3.8.1。我面临无法更改请求超时的问题。我在谷歌搜索答案,只有一个解决方案 - 在 OkHttpClient 中更改超时并将其设置为改造构建器,但它不起作用:/。这是我用于更改超时的代码:
Retrofit.Builder builder = new Retrofit.Builder()
.baseUrl(baseUrl)
.addConverterFactory(GsonConverterFactory.create(gson));
builder.client(new OkHttpClient.Builder()
.connectTimeout(50000, TimeUnit.MILLISECONDS)
.readTimeout(50000, TimeUnit.MILLISECONDS).build());
retrofit = builder.build();
Run Code Online (Sandbox Code Playgroud)
但是在这个请求仍然持续 10 秒之后,我得到了 SocketTimoutException
编辑
我做了更多的研究,并用不同版本的 Retrofit 对其进行了测试。我停止了改造版本 2.0.1,这个版本也不允许我更改超时:/。有人知道现在该怎么做吗?
编辑 2
我现在有两个地方有这个问题。我将描述用例,因此它可能有助于找到解决方案。
使用 1:
我想从远程服务器下载文件。我调用 Web 服务并等待文件流的响应。我需要等待更长时间,因为 Web 服务需要从数据库中获取文件并将其放入硬盘驱动器(无法更改它)。当文件很大时,将其复制到硬盘需要时间并且应用程序会收到 SocketTimeoutException。
使用2:
我将文件上传到服务器(并且工作正常)。上传后,我需要让 Web 服务知道它应该将文件加载到数据库中。我发送请求,情况与使用1类似,因为当文件很大时,加载需要很多时间并且我得到SocketTimeoutException。
更新
我想澄清一下情况。出现问题是因为我将第二个 OkHttpClient 分配给了重写超时的改造。如果有人会遇到类似的问题,我建议检查是否存在与我面临的情况类似的情况(覆盖超时的第二个 OkHttpClient)。
我正在使用 Node JS 和 Hapi (v17) 编写 BE 应用程序。当服务器正在运行并且我尝试使用POST方法调用端点时,我不断收到错误消息:
Failed to load http://localhost:8001/login: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:3000' is therefore not allowed access.
我想CORS在服务器站点上启用,但对我没有任何作用。
这是我在服务器站点上启用 CORS 的方法:
const hapi = require('hapi')
const server = hapi.server({
port: 8001,
host: 'localhost',
routes: {
cors: true
}
})
Run Code Online (Sandbox Code Playgroud)
我也试图为特定路线启用 cors 但这也没有效果:
server.route({
method: 'POST',
path: '/login',
config: {
cors: {
origin: ['*'],
additionalHeaders: ['cache-control', …Run Code Online (Sandbox Code Playgroud) 我想创建一个应该是桌面应用程序的新项目。为此,我选择了 Kotlin 语言和 TornadoFX 框架。我已经安装了TornadoFX插件并创建了一个新的 T tornadofx-gradle-project。Intellij 进行的基本设置成功,但我遇到了问题。当我想运行生成的项目时,它失败了。该项目无法解析 java fx。我已经通过网络挖掘并没有发现可以解决问题的任何内容。我在构建失败后收到的错误日志是:
有没有人面临同样的问题?我怎样才能摆脱它?
我已经安装了 JDK 11 并将其设置为构建配置,但我仍然收到问题:
java.lang.UnsupportedClassVersionError: org/openjfx/gradle/JavaFXPlugin has been compiled by a more recent version of the Java Runtime (class file version 55.0), this version of the Java Runtime only recognizes class file versions up to 52.0
Run Code Online (Sandbox Code Playgroud)
是否有更改,我在中间错过了什么?
我在使用 JUnit 测试功能时遇到解析 JSON 的问题。我想测试一下我的解析逻辑。当我执行测试用例时,我收到一条错误消息:
java.lang.RuntimeException: Method getString in org.json.JSONObject not mocked
我读到,由于 Android SDK 提供了额外的依赖项,因此需要为测试提供额外的依赖项org.json,因此我已将其放入 gradle 中:
testImplementation 'org.json:json:20180130'
不幸的是,这没有效果。当我在 JSON 对象上执行函数时发生错误getString():
json.getString(JSON_TYPE)
有没有人遇到过类似的问题并且知道如何处理?
//编辑
这是负责解析并导致问题的函数(缩写形式):
fun parse(jsonString: String) {
val json = JSONObject(jsonString)
val type = json.getString(JSON_TYPE) //here occurs an error
val id = json.getString(JSON_ID)
}
Run Code Online (Sandbox Code Playgroud)