ASP.NET-Web-API kann application/x-www-form-urlencoded HTTP POST nicht abrufen

 C Programming >> C-Programmierung >  >> Tags >> API
ASP.NET-Web-API kann application/x-www-form-urlencoded HTTP POST nicht abrufen

Zitat von hier:

Wenn Sie also Daten im Format data=string posten möchten , müssen Sie einen komplexen Typ erstellen.

public class MyFormData
{
    public string Data { get; set; }
}

Und aktualisieren Sie Ihren Controller wie folgt:

public void Post(MyFormData formData)
{
    //your JSON string will be in formData.Data
}

Andere Alternativen für Sie sind natürlich, den Inhaltstyp in JSON zu ändern, aber das hängt wirklich von Ihren Anforderungen ab.


Dieser Beitrag ist alt, aber ich bin auf der Suche nach einer Antwort darauf gestoßen. Ich werde posten, wie ich meine zum Laufen gebracht habe, vielleicht findet es jemand nützlich.

Hier ist die Anfrage:

POST /api/values HTTP/1.1
Host: localhost:62798
Accept: text/json
Content-Type: application/x-www-form-urlencoded
Cache-Control: no-cache
Postman-Token: 51ee1c5f-acbb-335b-35d9-d2b8e62abc74

UID=200&EMAIL=john%40jones.com&FIRST_NAME=John&LAST_NAME=jones&PHONE=433-394-3324&CITY=Seattle&STATE_CODE=WA&ZIP=98105

Hier ist das Modell:

public class SampleModel{
    public string UID { get; set; }

    public string Email { get; set; }

    public string First_Name { get; set; }

    public string Last_Name { get; set; }

    public string Phone { get; set; }

    public string City { get; set; }

    public string State_Code { get; set; }

    public string Zip { get; set; }
}

Und hier ist die POST-Methode, die automatisch (FromBody) urlencodierte Werte in das Modell konvertiert.

public HttpResponseMessage Post([FromBody] SampleModel value){

Ich konnte jeden Wert auswählen, dh

    SearchCity(value.City);
    SearchName(value.Last_Name);

Sie sollten ein Objekt Ihrer Daten wie folgt erstellen:

public class Device
{
  public string mac {get;set;}
  public string model {get;set;}
}

Ändern Sie dann die Aktionsmethode Ihres Controllers wie folgt und übergeben Sie Ihr Objekt an diese Methode von "consume

".
public void Post(Device deviceData)
{
    // You can extract data like deviceData.mac, deviceData.model etc
    data.Add(deviceData);
}

Sie können eine der beliebten Bibliotheken json.net zum Serialisieren/Deserialisieren von JSON-Objekten in C# verwenden