设备接口返回 415,怎样区分 JSON、表单与 Content-Type

2026-10-24

HTTP 415通常指请求内容的媒体类型或编码不被目标资源支持。应先核对厂商接口要求的Content-Type,再检查实际请求体字节。把JSON文本发成表单、或只补一个JSON请求头却仍发送表单字段,都不能靠状态码变成200来证明参数已经正确执行。

环境和证据范围

以只读离线请求样本说明头体一致性,路径和音量参数均为合成,不访问真实设备。接口可能支持多种媒体类型,也可能对编码给出不同错误码;415不是所有参数错误的统一诊断。还需分清Content-Type描述请求体,Accept描述期望响应类型。

核对顺序

  1. 从接口文档抄录方法、路径、媒体类型和参数类型,先固定目标资源。不要只复制curl命令中的数据部分,遗漏请求头;不同客户端对-d、JSON和表单的默认处理并不相同。

  2. 保存发送前的原始body,不要只看调试器美化后的对象。JSON应为合法JSON文本,表单应按约定编码键值;字段volume是数字还是字符串也须写进业务契约。

  3. 分别回放JSON+JSON头、表单+表单头,以及JSON头配表单体的反例。脚本只进行媒体类型分派和字段解析,不能替代厂商端的业务范围校验。

  4. 真实联调先使用不会改变状态的验证入口,或由设备方提供模拟端点。对写操作先确认维护条件,保存响应头、原始响应体和设备回读,避免为了试415连续操作现场音量。

可复算的输入与预期

样例1为application/json和{“volume”:30},结果为JSON数字30;样例2为application/x-www-form-urlencoded和volume=30,结果为表单文本30;样例3将JSON头配volume=30,得到负载无效;样例4用text/plain,得到媒体类型不支持。这里的诊断名是脚本结果,不伪装成真实HTTP响应。

下载与现场记录

下载本题合成输入与预期JSON、离线只读核验脚本和现场空白记录CSV。放在同一目录,用 Python 3 运行 python verify.py,逐项计算或解析后与预期比较,失败会显示差异。

现场字段包括 method、path、content_type、body_hex、parsed_value_type、response_status、device_readback。合成样例保持原样,实测另存并填写型号、版本、证据路径,未采集处留空。本地核验不代表真实设备、代理、浏览器或长期稳定性已测。

失败分支与移交

Content-Type带合法参数时应按媒体类型主值处理,不能简单与整串完全相等。解析通过还不说明参数生效:服务端可能忽略未知字段,或把越界值截断。若实际返回400、422等,应根据厂商文档追踪业务校验,不能强行归因于415。

交接资料要包含文档版本、请求头、脱敏body与类型、成功响应示例及设备回读方式。为每种资源分别列支持类型,避免把一个状态查询接口的约定套到上传、文件或控制接口。代理是否修改请求体和客户端默认编码仍需现场另测。

基础背景可看HTTP / RESTful 设备控制接口科普。请求体能解析之后,还要逐字段核对类型,见接口把 false 写成字符串后,怎样验收布尔值与枚举类型。更多资料在设备协议库。

需要接入中控时,可对照SoftControl设备联动需求核实适配范围;独立校验方法是否纳入交付需逐项约定。

一级资料

核对日期:2026-10-24。规范定义与本文应用约定分开,示例门限及脚本不自动代表产品原生能力。

需要展厅软硬件方案或定制开发?

加微信,把这一页发到你手机上

扫码加站长企业微信,会自动把这一页的链接发给你。问软件授权、报价,或者现场遇到问题,也可以直接聊。

去留微信

留言讨论

评论发布后会被人工复核,违规内容将被删除。

    还没有人评论,来说说你的看法

    如果发表没有反应,可以前往联系我们告诉我们。

    这个页面有问题?

    提交时会附带当前页面地址和浏览器信息,帮助我们定位问题。不填联系方式即为匿名。