You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android应用调用Theo Kanning的ChatGPT Java API时遇SocketTimeoutException如何解决

解决OpenAI Java API的SocketTimeoutException超时问题

问题描述

使用Theo Kanning开发的OpenAI Java API时,请求等待约10秒后触发java.net.SocketTimeoutException: timeout错误,尝试过的解决方案要么涉及未使用的OkHttp配置,要么提到项目中不存在的CONTEXT.XML文件,需要可行的超时延长方法。

解决方案

该API底层依赖OkHttp实现网络请求,默认超时时间为10秒。可以通过自定义OkHttpClient并设置超时参数,再传入OpenAiService来延长超时限制,具体步骤如下:

  • 创建OkHttpClient实例,通过newBuilder()设置连接超时、读取超时、写入超时时间(根据需求调整)
  • 使用包含自定义OkHttpClient的构造器初始化OpenAiService

修改后的代码示例

// 线程执行部分保持不变
Thread thread = new Thread(new Runnable() {
  @Override
  public void run() {
    try {
      String response = queryGPT();
      System.out.println(response);
    } catch (Exception e) {
      System.out.println("There was an error: "+e);
    }
  }
});
thread.start();
String queryGPT() {
  String query = myQuery;
  
  // 自定义OkHttpClient,设置超时时间(单位:秒)
  OkHttpClient client = new OkHttpClient.Builder()
          .connectTimeout(30, TimeUnit.SECONDS)
          .readTimeout(30, TimeUnit.SECONDS)
          .writeTimeout(30, TimeUnit.SECONDS)
          .build();
  
  // 使用自定义客户端初始化OpenAiService
  OpenAiService service = new OpenAiService(myKey, client);
  
  CompletionRequest request = CompletionRequest.builder()
    .prompt(myQuery)
    .model("text-davinci-003")
    .temperature(0.5)
    .maxTokens(1500)
    .frequencyPenalty(0.0)
    .presencePenalty(0.0)
    .bestOf(1)
    .echo(false)
    .build();
  
  List<CompletionChoice> response = service.createCompletion(request).getChoices();
  return response.get(0).getText();
}

说明

  • 超时时间可根据实际需求调整,比如请求复杂、返回内容较多时,可设置为60秒甚至更长
  • 无需修改CONTEXT.XML或引入额外未使用的依赖,仅需利用API本身提供的构造器扩展能力

内容的提问来源于stack exchange,提问作者TYG

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 11:05:24