当前位置: 首页 > 知识库问答 >
问题:

将JSON发布到Web API 2时出错:此资源不支持请求实体的媒体类型“text/plain”

燕琨
2023-03-14

我有这门课:

public class MyClass
{
    public MyClass() { Secret = "Don't tell me"; }
    public string Name { get; set; }
    public int Age { get; set; }
    public string Description { get; set; }
    private string Secret { get; set; }
}

这个WEB API方法:

        // POST api/fixture
    public HttpResponseMessage Post(MyClass value)
    {
        return new HttpResponseMessage(HttpStatusCode.Created);
    }

我已经将Web API设置为返回JSON而不是XML,并且我没有对默认配置进行任何其他更改。我试图用火狐的RESTClient扩展来测试这个方法。以下是我的请求:

POST localhost:XXXX/api/fixture
Content-Type: application/json
Accept: application/json
Content-Length: 60

{
 value : { "Name":"Cosby","Age":"13","Description":"OK" }
}

但是我得到了这个错误:

{“Message”:“此资源不支持请求实体的媒体类型“text/plain”,“ExceptionMessage”:“没有MediaTypeFormatter可用于从媒体类型为“text/plain”的内容中读取类型为“MyClass”的对象。”,“ExceptionType”:“System.Net.Http.UnsupportedMediaTypeException”,“StackTrace”:“在System.Net.Http.HttpContentExtensions.ReadAsAsync[T](HttpContent内容,类型,IEnumerable1格式化程序,IFormatterLogger格式化程序记录器,CancellationToken CancellationToken)\r\n在System.Net.Http.HttpContentExtensions.Readasync(HttpContent内容、类型、IEnumerable1格式化程序、IFormatterLogger格式化程序记录器、CancellationToken CancellationToken)\r\n在系统中。网状物Http。模型绑定。FormatterParameterBinding。ReadContentAsync(HttpRequestMessage请求,类型类型,IEnumerable`1格式化程序,IFormatterLogger格式化程序记录器,CancellationToken CancellationToken)“}

编辑:

我不明白,因为似乎这个方法甚至没有被调用。如果我调试,我会看到调用了构造函数,然后没有调用其他方法。没有提出任何例外。

我已经讨论这个问题很久了。我发现这个问题通常发生在内容类型设置不正确时,但我的情况似乎不是这样,因为请求甚至没有被处理。

任何想法?

谢谢

共有3个答案

夏法
2023-03-14

您可能需要在HTTP请求头中添加以下内容:

Content-Type: application/json
乌翰学
2023-03-14

您将application/json的内容类型发送到正文中,而不是作为标题。因此,您的POST请求默认为text/plain。RestClient扩展有一个单独的位置来输入标题。

如果您对通过网络发送的内容有任何疑问,请查看浏览器开发人员工具中的“网络”选项卡,或使用诸如Fiddler之类的工具查看网络流量。

白嘉志
2023-03-14

在POSTMAN内部,您只需将设置更改为application/json。请参阅下图。

 类似资料:
  • 我试图通过XLIFF内容在以下函数的参数,我得到错误: {“message”:“此资源不支持请求实体的媒体类型'application/xml'。”,“exceptionMessage”:“没有MediaTypeFormatter可用于从媒体类型为“application/xml”的内容中读取类型为“xliff”的对象。”,“exceptionType”:“System.Net.Http.Unsu

  • 我在泽西岛有一个Rest服务,我正在使用邮递员实现 我在邮递员中得到以下错误:

  • 我是自动化的一个API的POST调用使用Rest保证和内容类型和ACCEPT头我必须使用"应用程序/vnd.apijson"。但是每次我使用“应用程序/vnd.apijson”,我都会得到415个状态代码。尽管使用邮递员的相同POST呼叫工作得非常好。 以下是我的示例代码: 以下是收到的答复 我曾尝试将Content-Type更改为应用程序/json,正如其他帖子/评论所建议的那样,但这似乎对我的

  • 问题内容: 我正在使用JSON请求调用REST服务,并且它以错误响应。 请求内容类型设置为。 如果我在请求中不包含JSON对象,则效果很好。我正在使用JSON库。 我尝试使用几个不同的库,但这没什么区别。 有人可以帮我解决这个问题吗? 这是我的代码: 的值为: 问题答案: 不确定原因,但是从中 删除行解决了该问题。

  • 我用JSON请求调用REST服务,它用HTTP 415“不支持的媒体类型”错误进行响应。 请求内容类型设置为。 如果我在请求中不包含JSON对象,它就可以正常工作。我正在使用JSON库。 我试着使用了几个不同的库,但没有什么不同。 有人能帮我解决这个问题吗? 这是我的代码: 是: