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

Karate框架Multipart POST请求自动追加随机串致服务端解码失败

问题分析

这是Karate框架处理multipart请求的默认行为——自动生成**边界分隔符(boundary)**并添加到请求体中,用来分隔不同的multipart字段。但你的服务端期望接收纯JSON格式,而非标准multipart格式,因此出现了解码错误。

解决方案

根据需求,有两种处理方式:

方式1:直接发送纯JSON请求(放弃multipart)

如果服务端实际不需要multipart类型请求,只是误使用了multipart field语法,直接用request关键字设置JSON请求体即可:

* request { operations: '{"query":"mutation PicassoUploadImageRpc($endpointRequestData: EndpointRequestData) { rpcUploadImage( endpointRequestData: $endpointRequestData ) { message data{ allImages } errorDetail{ errorCode errorMessage errorType displayMessage httpStatusCode} } }","variables":{"endpointRequestData":{"rpcPicasso":{"rpcUploadImage":{"modelType":"modelType1","endPointId":59,"files":[{"key":"image","file":12345}],"body" :{"info":{"hotelCode":"1000115873","hotelId":1000115873,"spaceIds":[],"roomIds":[],"sequence":0,"caption":"hello","description":"hello","tags":["abc"],"sourceConfigName":"ingo","vendorImageId":20,"imgSrc":"makemytrip","isOnBoarding":"true"},"imageUrl":""}}}}}' }
When method POST
Then status 200

方式2:手动指定multipart边界(适配服务端)

如果确实需要发送multipart请求,可手动设置Content-Type头指定自定义边界,确保服务端能识别:

* header Content-Type = "multipart/form-data; boundary=my-custom-boundary"
* multipart field metadata = { operations: '{"query":"mutation PicassoUploadImageRpc($endpointRequestData: EndpointRequestData) { rpcUploadImage( endpointRequestData: $endpointRequestData ) { message data{ allImages } errorDetail{ errorCode errorMessage errorType displayMessage httpStatusCode} } }","variables":{"endpointRequestData":{"rpcPicasso":{"rpcUploadImage":{"modelType":"modelType1","endPointId":59,"files":[{"key":"image","file":12345}],"body" :{"info":{"hotelCode":"1000115873","hotelId":1000115873,"spaceIds":[],"roomIds":[],"sequence":0,"caption":"hello","description":"hello","tags":["abc"],"sourceConfigName":"ingo","vendorImageId":20,"imgSrc":"makemytrip","isOnBoarding":"true"},"imageUrl":""}}}}}' }
When method POST
Then status 200
关键说明
  • Karate的multipart语法自动生成随机边界是HTTP multipart请求的标准规范,用于区分不同表单字段。
  • 若服务端不支持multipart格式,必须改用纯JSON请求,避免触发Karate的multipart处理逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 16:24:59