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

RestAssured自动化带授权POST API返回401/403问题求助

问题

使用RestAssured自动化携带Authorization的POST API请求时,返回401状态码(预期为201),后续尝试又得到403状态码,但该API在Postman中可正常运行并返回201状态码。相关代码如下:

RestAssured.baseURI="http://restapi.adequateshop.com/api/users";
String jsonBody = "{\"tourist_name\":\"Mike\",\"tourist_email\":\"mxyz5676@gmail.com\",\"tourist_location\":\"Paris\"}";    
String token="433tc02b-b5c1-4bd8-836a-618cdc31c492";
    
Response response = RestAssured.given()
             .header("Authorization", "Bearer " + token)
             .header("User-Agent", "PostmanRuntime/7.32.3")
             .header("Accept", "*/*")
             .header("Connection", "keep-alive")
             .body(jsonBody)
            .post("http://restapi.adequateshop.com/api/users");

int statusCode = response.getStatusCode();
String responseBody = response.getBody().asString();
System.out.println("Response Code: " + statusCode);

System.out.println("Response Body: " + responseBody);

解决方案

  • 核对Token的有效性与格式:
    确认代码中的Token与Postman使用的完全一致,避免复制时出现空格、换行或字符错误。虽然代码中Bearer 与Token的空格处理正确,但仍需检查Token本身是否未过期、权限是否匹配当前接口。
  • 补充必要的请求头:
    你的请求体是JSON格式,但代码中未添加Content-Type: application/json请求头,服务端可能无法正确解析请求体,进而导致鉴权逻辑异常。在given()链中添加以下代码即可:
    .header("Content-Type", "application/json")
    
  • 统一请求URL写法:
    代码中已设置baseURI,但post()方法又传入了完整URL,建议改为.post("/")或直接.post(),避免URL拼接时出现潜在问题。
  • 更换有效Token重试:
    403状态码通常表示Token权限被封禁或失效,可能是前期错误请求触发了服务端的防护机制,重新获取一个新的有效Token再测试。
  • 对比Postman生成的RestAssured代码:
    在Postman中找到对应请求,点击「代码」按钮,选择Java - RestAssured格式,直接对比生成的代码与你自己的代码,快速找出请求头、请求体或其他配置的差异。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 19:38:35