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

如何将RestAssured超时时间设置为120秒?

解决RestAssured中RequestSpecBuilder设置120秒超时未生效的问题

问题说明

当接口响应超过60秒时,会收到504超时错误,尝试通过RequestSpecBuilder将超时时间延长至120秒,但当前配置未生效。

问题分析

你当前使用setParam传入字符串参数名的方式容易出现拼写错误,RestAssured的HttpClientConfig提供了更直观、不易出错的链式API来配置超时参数,直接调用对应方法即可。

另外需要注意:504错误是网关超时,除了客户端超时设置,还要确认服务端或中间网关(如Nginx、API网关)是否也将超时时间调整到120秒以上,否则网关会先于客户端返回超时。

修改后的代码

将原来的config定义替换为以下代码,使用RestAssured提供的专用超时配置方法:

import io.restassured.config.HttpClientConfig;
import io.restassured.config.RestAssuredConfig;
import io.restassured.builder.RequestSpecBuilder;
import io.restassured.specification.RequestSpecification;
import io.restassured.filter.log.LogDetail;
import io.restassured.filter.log.RequestLoggingFilter;
import io.restassured.filter.log.ResponseLoggingFilter;
import java.util.concurrent.TimeUnit;

public class SpecificationFactory {

    // 使用RestAssured专用API配置超时,避免参数名拼写错误
    public static RestAssuredConfig config = RestAssuredConfig.config()
            .httpClient(HttpClientConfig.httpClientConfig()
                    .setConnectionTimeout(120, TimeUnit.SECONDS)
                    .setSocketTimeout(120, TimeUnit.SECONDS)
                    .setConnectionManagerTimeout(120, TimeUnit.SECONDS));

    private SpecificationFactory() {
    }

    public static RequestSpecification getDefaultRequestSpecification(String serviceName) {
        return new RequestSpecBuilder()
                .setConfig(config)
                .setBaseUri(UrlConfig.getUrl(ENV, serviceName))
                .addHeader(Headers.AUTHORIZATION_HEADER, String.format(Headers.AUTHORIZATION_BEARER, ACCESS_TOKEN))
                .setContentType(ContentType.JSON)
                .setAccept(ContentType.JSON)
                .log(LogDetail.ALL)
                .addFilter(new RequestLoggingFilter())
                .addFilter(new ResponseLoggingFilter())
                .build()
                .filter(new AllureRestAssured());
    }
}

额外检查项

  • 确认服务端接口的处理超时时间已调整至120秒以上
  • 检查中间网关(如Nginx、Kong等)的proxy_read_timeout或类似配置是否设置为120秒或更长
  • 测试时可以故意构造一个120秒后返回的接口,验证客户端是否能正常等待响应

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 01:00:57