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

使用Rest Assured时含逗号的URL返回404错误,Postman/浏览器可正常访问

解决Rest Assured中URL含逗号导致404的问题

我之前也碰到过一模一样的问题!你猜的没错,问题根源就是URL里的逗号——浏览器和Postman会自动帮你处理特殊字符的URL编码,但Rest Assured默认不会这么做,直接发送带逗号的URL会让服务器解析错误,返回404。下面给你几个靠谱的解决办法:

方法1:手动替换逗号为URL编码值

逗号对应的URL编码是%2C,直接把URL里的逗号换成这个编码值就行。比如原来的baseURL/catName,cat version改成baseURL/catName%2Ccat version。

Rest Assured代码示例:

given()
    .baseUri("https://你的baseURL.com")
.when()
    .get("/catName%2Ccat version")
.then()
    .statusCode(200);

方法2:用URLEncoder动态编码路径部分

如果你的路径是动态生成的(比如从变量里获取),手动替换太麻烦,可以用Java自带的URLEncoder来编码整个路径片段:

import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;

// 动态生成的路径部分
String pathSegment = "catName,cat version";
// 编码路径,指定UTF-8字符集
String encodedSegment = URLEncoder.encode(pathSegment, StandardCharsets.UTF_8.toString());

given()
    .baseUri("https://你的baseURL.com")
.when()
    .get("/" + encodedSegment)
.then()
    .statusCode(200);

方法3:配置Rest Assured自动编码URL

如果不想每次都手动编码,可以全局配置Rest Assured开启URL编码功能,这样它会自动处理路径里的特殊字符:

import io.restassured.RestAssured;
import io.restassured.config.EncoderConfig;

// 全局配置自动编码
RestAssured.config = RestAssured.config()
    .encoderConfig(EncoderConfig.encoderConfig()
        .encodeContentTypeAs("application/x-www-form-urlencoded", ContentType.URLENC));

// 或者更简单的全局开关
RestAssured.urlEncodingEnabled = true;

// 之后正常写请求就行,逗号会被自动编码
given()
    .baseUri("https://你的baseURL.com")
.when()
    .get("/catName,cat version")
.then()
    .statusCode(200);

为什么Postman和浏览器没问题?

因为它们在发送请求前,会自动对URL中的特殊字符(逗号、空格、问号等)进行URL编码,服务器收到的是编码后的正确路径,所以能正常返回内容。而Rest Assured默认不会自动编码路径中的特殊字符,导致服务器无法识别这个URL,所以返回404。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:15:00