【问题标题】:How to change media from text/plain to application/json?如何将媒体从 text/plain 更改为 application/json?
【发布时间】:2020-02-26 00:28:18
【问题描述】:

当我将数据从 JavaScript 发送到 API (asp.net WebApi) 时,我收到以下错误消息:此资源不支持请求实体的媒体类型“text/plain”。我想以 JSON 格式发送数据。

The JavaScript code:
let newReservation = {
    "name" : name,
    "emai" : email,
    "phone" : phone,
    "people" : people,
    "date" : date,
    "time" : time
}

data = JSON.stringify(newReservation)
reservation = JSON.parse(data)

let Http = new XMLHttpRequest
let url = 'https://localhost:44320/api/reservations'

Http.open('POST', url)
Http.send(reservation)
console.log()
Http.onreadystatechange=(e)=>{
    console.log(Http.responseText)
}

The C# code:
Controller:
public IHttpActionResult Post([FromBody]Reservation reservation)
    {
        if (!ModelState.IsValid)
        {
            return BadRequest(ModelState);
        }

        expressoDbContext.Reservations.Add(reservation);
        expressoDbContext.SaveChanges();
        return StatusCode(HttpStatusCode.Created);
    }
 Config:
 config.Formatters.Remove(config.Formatters.XmlFormatter);
 config.Formatters.JsonFormatter.SerializerSettings.Formatting = 
 Newtonsoft.Json.Formatting.Indented;

【问题讨论】:

标签: javascript c# api


【解决方案1】:

您需要在XMLHttpRequest 中设置Content-Type 标头:

Http.setRequestHeader("Content-Type", "application/json;charset=UTF-8");

【讨论】:

    【解决方案2】:

    将 HTTP 请求标头设置为 **Content-Type: application/json**。 您必须添加此行 HTTP.setRequestHeader("Content-Type", "application/json"); 到你的代码。

    【讨论】:

      猜你喜欢
      • 2017-02-03
      • 1970-01-01
      • 2020-09-30
      • 1970-01-01
      • 2019-03-08
      • 2020-09-20
      • 2017-01-15
      • 2018-03-22
      • 2014-02-14
      相关资源
      最近更新 更多