WebAPI ist wie erwartet funktioniert, weil Sie es doch sagen, dass Sie das JSON-Objekt sind zu senden:
{ "username":"admin", "password":"admin" }
Dann Sie fragen es zu deserialisieren es als string
was unmöglich ist, da es keine gültige JSON-Zeichenfolge ist.
Lösung 1:
Wenn Sie die tatsächliche JSON wie im Wert von value
wird erhalten möchten:
value = "{ \"username\":\"admin\", \"password\":\"admin\" }"
dann die Zeichenfolge, die Sie in den Körper des Antrags einstellen müssen Postbote ist:
"{ \"username\":\"admin\", \"password\":\"admin\" }"
Lösung 2 (ich gehe davon aus der Was Sie wollen):
Erstellen Sie ein C# -Objekt, das mit dem JSON übereinstimmt, damit WebAPI es ordnungsgemäß deserialisieren kann.
zuerst eine Klasse erstellen, die Ihre JSON entspricht:
public class Credentials
{
[JsonProperty("username")]
public string Username { get; set; }
[JsonProperty("password")]
public string Password { get; set; }
}
Dann in Ihrer Methode verwenden, um dies:
[Route("api/account/GetToken/")]
[System.Web.Http.HttpPost]
public HttpResponseBody GetToken([FromBody] Credentials credentials)
{
string username = credentials.Username;
string password = credentials.Password;
}
nicht hat, ist sein müssen 'GetToken ([FromBody] string Benutzername, [ FromBody] String Passwort) '? Oder Sie haben erwartet, dass "Wert" die gesamte JSON-Zeichenfolge enthält? – Andrei
Ich möchte meine Daten im Körper als JSON-String formatiert übergeben. Was ist das Problem in meinem Code? – Mennan