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

使用Cucumber BDD框架调用文件上传API遇500错误,表单参数异常

文件上传API调用500错误排查与修改建议

以下是针对你的Cucumber BDD+RestAssured文件上传请求返回500错误的具体修改建议:

  • 移除重复的Content-Type设置
    代码中同时通过addHeader("Content-Type","multipart/form-data")和setContentType(ContentType.MULTIPART)设置请求头,会导致请求头重复,引发服务器解析异常。直接删除addHeader("Content-Type","multipart/form-data")这一行即可,setContentType(ContentType.MULTIPART)会自动生成正确的multipart请求头。

  • 匹配表单参数的类型要求
    检查API文档中Size、Length、Priority等数值型参数的接收格式,部分API要求这类参数以字符串形式传递。尝试将数字参数改为字符串类型:

    addFormParam("Size","11").
    addFormParam("Length","1").
    addFormParam("Priority","2").
    addFormParam("ClientId","18").
    addFormParam("SubClientId","19").
    
  • 校验文件路径与存在性
    确认D:\\APItestdocument.docx文件确实存在,路径无拼写错误。可以添加文件存在性校验,避免因文件不存在导致的请求异常:

    File uploadFile = new File("D:\\APItestdocument.docx");
    if(!uploadFile.exists()){
        throw new IOException("上传文件不存在:" + uploadFile.getAbsolutePath());
    }
    addMultiPart("file", uploadFile)
    
  • 排查请求日志细节
    查看logging.txt中的完整请求内容,确认表单参数是否正确封装到multipart请求中,是否存在参数缺失或格式错误。必要时可以临时添加控制台日志输出,方便实时查看请求详情。

  • 避免RequestSpecification复用污染
    当前代码中全局变量req初始化后会复用,多次执行测试可能携带旧状态。建议每次调用file_upload()时重新构建RequestSpecification,去掉全局变量的判断逻辑:

    public RequestSpecification file_upload() throws IOException
    {
        PrintStream log = new PrintStream(new FileOutputStream("logging.txt"));
        File uploadFile = new File("D:\\APItestdocument.docx");
        if(!uploadFile.exists()){
            throw new IOException("上传文件不存在:" + uploadFile.getAbsolutePath());
        }
        return new RequestSpecBuilder()
                .setBaseUri(getGlobalValue("BaseUrl"))
                .setContentType(ContentType.MULTIPART)
                .addFormParam("Name","Annu")
                .addFormParam("Size","11")
                .addFormParam("Length","1")
                .addFormParam("Type","docx")
                .addFormParam("Priority","2")
                .addFormParam("ClientId","18")
                .addFormParam("SubClientId","19")
                .addFormParam("Comment","no Comments")
                .addMultiPart("file", uploadFile)
                .addFilter(RequestLoggingFilter.logRequestTo(log))
                .addFilter(ResponseLoggingFilter.logResponseTo(log))
                .build();
    }
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 09:41:04