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

使用 curl 调用已部署 MLflow 模型时 Content-Type 被识别错误

问题原因

该问题基本都出在Windows终端环境,由两个原因共同导致:

  • PowerShell默认给curl配置了Invoke-WebRequest的命令别名,这个别名指向的是PowerShell原生cmdlet,并非真正的cURL工具。输入的-d、-H等cURL风格参数不会按cURL规则解析,POST请求默认使用application/x-www-form-urlencoded作为Content-Type,自定义请求头并未正确传递给MLflow服务。
  • 类Unix Shell(Bash/Zsh等)支持单引号包裹字符串,但Windows PowerShell、CMD均不认可单引号作为JSON体的边界符号,会造成JSON参数解析错误。
解决方法

根据当前使用的终端选择对应命令即可:

PowerShell环境

方式一:显式调用真实cURL

Win10 1809及以上版本系统自带真实cURL,添加.exe后缀可绕过别名优先级,直接调用官方cURL程序:

curl.exe -d '{\"columns\":[\"x\"], \"data\":[[1], [-1]]}' -H "Content-Type: application/json; format=pandas-split" -X POST http://localhost:5000/invocations

可执行Get-Command curl验证当前命中的程序:若返回结果的CommandType属性为Alias,说明命中的是内置别名。

方式二:使用PowerShell原生命令

无需依赖cURL,直接用PowerShell原生的Invoke-RestMethod构造请求,语法适配性更好:

$body = @{
    columns = @("x")
    data = @(@(1), @(-1))
} | ConvertTo-Json

Invoke-RestMethod -Uri "http://localhost:5000/invocations" `
    -Method Post `
    -Body $body `
    -ContentType "application/json; format=pandas-split"

Windows CMD环境

CMD不支持单引号语法,JSON外层使用双引号,内部双引号用反斜杠转义:

curl -d "{\"columns\":[\"x\"], \"data\":[[1], [-1]]}" -H "Content-Type: application/json; format=pandas-split" -X POST http://localhost:5000/invocations

类Unix终端(Bash/Zsh/WSL/Git Bash)

该环境的单引号语法与cURL原生要求一致,补全请求地址的http://前缀即可正常执行:

curl -d '{"columns":["x"], "data":[[1], [-1]]}' -H 'Content-Type: application/json; format=pandas-split' -X POST http://localhost:5000/invocations

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.22 06:57:02