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

如何在Karate中发送带二进制表单数据文件的Post请求?遇415错误

解决Karate POST请求415错误的方案

问题分析

415错误表示服务器不支持请求的媒体类型,结合你的代码,核心问题出在请求构造不规范、multipart字段未指定正确内容类型,以及部分必要请求头缺失。

修正后的代码

Feature: 文件上传接口测试
  Scenario: 上传HTML文件
    * def query = {definitionType: 'Standard', equipmentType: 'Machine'}
    * header 'Accept-Encoding' = 'gzip, deflate, br'
    * header 'Connection' = 'keep-alive'
    * def authorization = 'Bearer dhjrh'
    * header 'Authorization' = authorization  # 补充身份验证头
    * url data.baseurl + data.definurl
    Given path 'Bxml'
    And params query
    * def htmlFile = read('src/test/java/features/P/1mb.html')
    When method post
      And multipart field file: htmlFile, filename: '1mb.html', contentType: 'text/html'
    Then status 200

关键修复点

  1. 规范DSL结构:Karate要求严格遵循Given(配置请求参数、地址)→ When(发送请求)→ Then(断言)的流程,原代码将多个指令混写,导致请求构造异常。
  2. 指定multipart文件的Content-Type:上传HTML文件时,必须明确设置contentType: 'text/html',否则Karate会使用默认类型,服务器无法识别从而返回415。
  3. 补充Authorization头:原代码定义了身份验证令牌但未添加到请求头,若接口需要身份验证,这会导致请求不合法,虽不是415直接原因,但必须补上。
  4. 确认接口支持multipart类型:如果接口仅接受application/json等非multipart类型,需调整上传方式(比如将文件转为Base64放在JSON体中),但文件上传场景通常使用multipart/form-data。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 11:45:04