Postman发送Protobuf格式POST请求遇415错误的解决咨询
解决Postman发送Protobuf POST请求报415错误的方案
你的问题核心是Postman的请求头或请求体格式不符合服务端要求,导致415 Unsupported Media Type错误。以下是具体配置步骤:
一、配置正确的请求头
服务端Post方法明确声明[Consumes("application/x-protobuf", "application/json")],必须确保Postman发送的请求包含正确的Content-Type:
- 在Postman的「Headers」选项卡添加:
- 键:
Content-Type,值:application/x-protobuf - (可选)如果需要接收Protobuf格式响应,添加键:
Accept,值:application/x-protobuf
- 键:
二、构造合法的Protobuf请求体
Postman无法直接输入Protobuf二进制格式,可通过以下两种方式生成:
方式1:利用现有控制台客户端导出二进制数据
- 修改控制台项目的
PostProtobufData方法,在生成data数组后添加文件写入代码:var data = stream.ToArray(); // 新增:将序列化后的二进制数据写入文件 System.IO.File.WriteAllBytes("item.protobuf", data); - 运行控制台的Post方法,得到
item.protobuf文件。 - 在Postman的「Body」选项卡,选择「binary」类型,点击「Select File」选择生成的
item.protobuf文件。
方式2:使用Postman Protobuf插件生成请求体
- 从控制台导出Item的Protobuf定义:运行
GetProtobufData方法,控制台会输出Item的.proto文件内容,将其保存为item.proto,内容示例:syntax = "proto3"; message Item { int32 Id = 1; string Name = 2; int64 Value = 3; } - 在Postman插件商店搜索并安装「Protobuf Support」插件。
- 在Postman的「Body」选项卡,选择「Protobuf」类型,点击「Import Proto」导入
item.proto文件。 - 选择
Item作为消息类型,填写对应字段值(如Id=5566677、Name=kpatel、Value=1234),插件会自动生成符合要求的二进制请求体。
三、验证服务端配置(可选)
确保你的ASP.NET Core项目已正确注册Protobuf格式支持,在Program.cs中应有类似代码:
builder.Services.AddControllers() .AddProtobufFormatters();
(你的控制台客户端能正常请求,说明此配置已存在,可跳过)
完成以上配置后,发送POST请求即可触发服务端断点,成功反序列化Protobuf消息。
内容的提问来源于stack exchange,提问作者Kuv Patel
相关产品推荐
相关产品推荐

