Pertanyaan ASP.NET Core form Hasil POST dalam respons HTTP 415 Jenis Media Tidak Didukung


Mengirim formulir permintaan HTTP POST (Content-Type: application/x-www-form-urlencoded) ke hasil pengontrol di bawah ini ke dalam HTTP 415 Jenis Media Tidak Didukung tanggapan.

public class MyController : Controller
{
    [HttpPost]
    public async Task<IActionResult> Submit([FromBody] MyModel model)
    {
        //...
    }
}

Formulir posting tajuk HTTP:

POST /submit HTTP/1.1
Host: example.com:1337
Connection: keep-alive
Content-Length: 219
Pragma: no-cache
Cache-Control: no-cache
Origin: https://example.com:1337
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36
Content-Type: application/x-www-form-urlencoded
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Referer: https://example.com:1337/submit
Accept-Encoding: gzip, deflate, br
Accept-Language: en-US,en;q=0.8,nl;q=0.6

Ini digunakan untuk bekerja dengan ASP.NET MVC 5 pada .NET 4.6.


49
2018-06-14 07:55


asal


Jawaban:


Untuk formulir, gunakan [FromForm] atribut bukan [FromBody] atribut.

Kontroler di bawah berfungsi dengan ASP.NET Core 1.1:

public class MyController : Controller
{
    [HttpPost]
    public async Task<IActionResult> Submit([FromForm] MyModel model)
    {
        //...
    }
}

87
2018-06-14 07:55



Anda dapat menggunakan [FromBody] tetapi Anda perlu mengaturnya Jenis konten tajuk permintaan Anda ke aplikasi / json

seperti

Content-Type: application/json

29
2017-09-18 11:32



Pertama Anda perlu menentukan di Header Content-Type, misalnya, bisa application/json.

Jika Anda mengatur application/json tipe konten, maka Anda perlu mengirim json.

Jadi dalam body permintaan Anda, Anda tidak akan mengirim form-datatidak x-www-for-urlencoded tapi a raw json, misalnya {"Username": "user", "Password": "pass"}

Anda dapat mengadaptasi contoh ke berbagai jenis konten, termasuk apa yang ingin Anda kirim.

Anda dapat menggunakan alat seperti Postman atau curl untuk bermain dengan ini.


0
2017-07-28 15:01