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

Robot Framework带文件的POST请求报400错误,求问题排查

问题分析与修复方案

核心问题点

  • 错误的Content-Type设置
    你手动设置了拼写错误的Content-Type=applicaion/json(正确应为application/json),但接口实际需要multipart/form-data格式(Postman用form-data成功就是证明)。发送带文件的请求时,RequestsLibrary会自动生成正确的multipart/form-data头部,手动指定application/json会导致服务器无法解析请求体,返回400。

  • 参数传递方式冲突
    POST On Session同时使用json和files参数是错误的。发送form-data请求时,普通字段(title、isPrivate等)应放在data参数里,而非json参数——json参数会把数据序列化为JSON格式,和form-data格式不兼容。

  • 文件参数格式不规范
    Get File For Streaming Upload返回的是文件流对象,构建文件字典时,需按(文件名, 文件对象, 媒体类型)的元组格式传递,才能让服务器正确识别文件信息。

修复后的代码

Post request with a Image File
    # 移除手动设置的Content-Type,让库自动处理multipart/form-data
    ${POST_HEADER}=    Create Dictionary  Authorization=Bearer ${token}
    # 普通字段存入data用的字典
    ${org_post_body}=    Create Dictionary    title=Test Robot Post    isPrivate=true
    ...    description=Test Robot Post Description   associationType=${assn_typ1}
    ...    associationId=${org_id}      
    # 获取文件流并构建标准文件参数格式
    ${img_file}=    Get File For Streaming Upload    ${CURDIR}\\pic1.jpg
    ${file}=    Create Dictionary    files=('pic1.jpg', ${img_file}, 'image/jpeg')
    # 用data传递普通字段,files传递文件
    ${resp}=    POST On Session    host_server  /api/post/  headers=${POST_HEADER}    data=${org_post_body}    files=${file}
    Status Should Be    200    ${resp}

额外说明

  • 文件媒体类型(MIME type)可根据实际文件类型调整:jpg用image/jpeg,png用image/png,显式指定比自动推断更稳妥。
  • Robot Framework中路径的反斜杠需转义为\\,或直接使用正斜杠/,避免路径解析错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 02:30:48