2016-05-16 14 views
5

Her zaman null değerinden bedene ulaşırım. Fiddler'ı kullanırken sorun yaşıyorum ama postacı başarısız.Gönderiyi json verilerini web api'ye aktar

böyle bir web API vardır:

[Route("api/account/GetToken/")] 
    [System.Web.Http.HttpPost] 
    public HttpResponseBody GetToken([FromBody] string value) 
    { 
     string result = value; 
    } 

Benim postacı veriler: enter image description here

ve başlık: enter image description here

+1

is 'GetToken olması gerekmez mi ([FromBody] dize adınızı, [ FromBody] dize şifresi) '? Ya da tüm json dizesini içermesi için değer mi beklediniz? – Andrei

+0

Verilerimi vücutta biçimlendirilmiş json dizesi olarak aktarmak istiyorum. Kodumdaki sorun nedir? – Mennan

cevap

8

WebAPI olduğunu Bunu json nesnesi gönderiyoruz o kadar söylüyorsun çünkü beklendiği gibi çalışmıyor: Eğer soruyorsun Sonra

{ "username":"admin", "password":"admin" } 

string olarak onu seri hale getirmek için geçerli bir JSON dizesi olmadığından imkansızdır.

Çözüm 1:

olacaksın value değerinde olduğu gibi gerçek JSON almak istiyorsanız:

value = "{ \"username\":\"admin\", \"password\":\"admin\" }" 

o zaman istek gövdesini ayarlamanız gerekir dize postacıdır için: (Ben bu varsayıyorum 2

"{ \"username\":\"admin\", \"password\":\"admin\" }" 

Çözüm İstediğiniz şey nedir?):

WebAPI'nin düzgün şekilde seri hale getirilebilmesi için JSON ile eşleşen bir C# nesnesi oluşturun. Bunu kullanmak için yönteminde Sonra

public class Credentials 
{ 
    [JsonProperty("username")] 
    public string Username { get; set; } 

    [JsonProperty("password")] 
    public string Password { get; set; } 
} 

:: Önce JSON eşleşen bir sınıf oluşturmak

[Route("api/account/GetToken/")] 
[System.Web.Http.HttpPost] 
public HttpResponseBody GetToken([FromBody] Credentials credentials) 
{ 
    string username = credentials.Username; 
    string password = credentials.Password; 
} 
3

Bir nesneyi yayınlama ve bunu bağlamaya çalıştığınız dize. Bunun yerine, bu verileri temsil etmek üzere bir türü oluşturun:

public class Credentials 
{ 
    public string Username { get; set; } 
    public string Password { get; set; } 
} 

[Route("api/account/GetToken/")] 
[System.Web.Http.HttpPost] 
public HttpResponseBody GetToken([FromBody] Credentials value) 
{ 
    string result = value.Username; 
} 
İlgili konular