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

Robot Framework发送POST请求报Unsupported Media Type错误如何解决

问题核心原因

415 Unsupported Media Type错误本质是请求体格式和请求头声明的Content-Type不匹配,或Content-Type被库自动覆盖为无效值。

你两次写法的错误点

  • 第一次写法:Get file读取到的是JSON格式的字符串,传给data参数时,Requests库默认会将Content-Type设置为application/x-www-form-urlencoded,即便你手动指定了Content-Type也会被覆盖,最终服务端识别不到有效媒体类型。
  • 第二次修改逻辑完全错误:你读取到JSON字符串后,先执行json.dumps会把字符串再次序列化,生成带转义符的无效JSON,之后又json.loads转回字典,最终传给data参数的是Python字典,依然会被库编码为表单格式,无法匹配你设置的JSON类型请求头。

正确实现方案

方案1:使用json参数传参(官方推荐)

RequestsLibrary的POST On Session关键字提供了专门的json参数,传入Python字典时会自动序列化为JSON字符串,同时自动设置正确的Content-Type: application/json请求头,无需手动配置该头部。

Create new company
${headers} =  Create Dictionary   Accept=application/json
# 读取JSON文件并解析为Python字典
${json_content} =  Get file  create.json
${body_dict} =  Evaluate  json.loads($json_content)  json
Create Session    http_session   ${url}   disable_warnings=${True}
# 使用json参数传递请求体
${response} = POST On Session   http_session  ${company}  json=${body_dict} headers=${headers}

方案2:使用data参数传参

如果你坚持用data参数,直接传递读取到的原始JSON字符串即可,不要做多余的序列化/反序列化操作,手动设置的Content-Type会正常生效。

Create new company
${headers} =  Create Dictionary   Accept=application/json    Content-Type=application/json
# 直接读取JSON字符串作为请求体
${body_str} =  Get file  create.json
Create Session    http_session   ${url}   disable_warnings=${True}
# 传递JSON字符串给data参数
${response} = POST On Session   http_session  ${company}  data=${body_str} headers=${headers}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 11:36:05