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

