我有一个最小的API服务与MapPost:
app.MapPost("/sendmessage", (RabbitMessage rm) => server.SendMessage(rm.exchange,
rm.routingkey, rm.message));
app.Run();
record RabbitMessage(string exchange, string routingkey, string message);
它在使用Postman发送JSON时工作正常:
{
"message": "msg",
"routingkey": "freestorage",
"exchange": "system"
}
但是从C#客户端:
var kv = new Dictionary<string, string> {
{ "exchange", "system" },
{ "routingkey", routingkey },
{ "message", message }
};
var content = new FormUrlEncodedContent(kv);
string contentType = "application/json";
if (Client.DefaultRequestHeaders.Accept.FirstOrDefault(hdr => hdr.MediaType == contentType) == default)
Client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue(contentType));
var response = await Client.PostAsync("sendmessage", content);
响应是UnsupportedMediaType。将这些值发送到最小API的正确方法是什么?或者我需要对API本身进行不同的设置吗?
1条答案
按热度按时间qoefvg9y1#
我不认为使用
FormUrlEncodedContent
是正确的方式,因为它是用于application/x-www-form-urlencoded
MIME类型。相反,您应该使用
StringContent
传递请求主体,并将kv
序列化为content
。