语言: English | 简体中文
以下配置控制 SDK 到平台的连接,使用快速开始中的 station.openapi 属性绑定。
Endpoint 由技术支持提供,使用以 http:// 或 https:// 开头的完整根地址,例如:
station:
openapi:
endpoint: http://station.example.comEndpoint 可以包含平台部署所需的 context path,但不要:
- 追加
/remoteApi/time或其他具体接口路径; - 添加用户名、密码、query 或 fragment;
- 使用与凭证不属于同一环境的地址。
| 配置 | 默认值 | 说明 |
|---|---|---|
connect-timeout |
3s |
建立网络连接的最长时间 |
read-timeout |
10s |
每次阻塞读取的最长等待时间,也适用于下载 |
call-timeout |
15s |
普通 JSON 接口每次 HTTP 尝试的总时限 |
下载默认没有总时限。只要数据持续到达,且每次读取等待未超时,整份文件可以传输超过 10 秒或 15 秒。连接和读取超时仍然生效,包括等待响应开始的阶段。
客户端超时配置和 RequestOptions 中显式设置的超时都必须大于 0。需要限制下载总时长时,设置 RequestOptions.callTimeout;全局
call-timeout 不用于下载。
Sample
的 StationOpenApiConfiguration.java
已创建单例 Bean,并通过 destroyMethod = "close" 在应用关闭时释放资源。
复用该 Bean 以共享连接。Client 只关闭自行创建的 transport;通过 .transport(...) 传入的对象由调用方管理。
可以通过 RequestOptions 放宽读取等待时间,或为某次下载设置总时限。以下示例允许单次读取等待两分钟,并显式限制下载总时长为三分钟:
RequestOptions options = RequestOptions.builder()
.requestId("large-download-0001")
.readTimeout(Duration.ofMinutes(2))
.callTimeout(Duration.ofMinutes(3))
.build();
client.result().downloadResource(request, outputStream, options);未设置的 read timeout 继承 Client 配置。未设置的 call timeout 对普通 JSON 调用继承 Client 配置,对下载则不设总时限。
requestId 用于关联日志和异常,不是业务幂等键。
需要复用代理、连接池或拦截器时,通过 OkHttpTransportFactory.create (client)
包装自己的 OkHttpClient,再传入 .transport(...)。
工厂会关闭自动重试和重定向。不要在拦截器中添加重试逻辑,以免重复执行写入或控制操作。
自行实现 transport 时,须遵守 HttpTransport 契约 ,包括输出流归属和超时语义。
按以下顺序检查:
- Endpoint 是否来自当前环境的技术支持;
- 应用所在机器是否能访问该地址和端口;
- Endpoint 是否误加了具体接口路径;
- 凭证是否属于同一环境;
- 连接是否在 connect、read 或 call timeout 阶段失败。
异常中的 requestId、operation 和 code 可以用于定位问题,但不要记录完整请求体、响应体或凭证。