2013-03-11 15 views
17

Sto cercando di capire la nuova API Web ASP.NET.Registrazione di dati in API Web asp.net

Finora sono stato in grado di creare questa firma metodo e connettersi ad esso proprio bene e ottenere una risposta valida ...

[HttpPost] 
public HttpResponseMessage CreateAccount() 

sono in grado di inviare una richiesta a questo metodo con Fiddler e ho verificato che stia ricevendo la richiesta.

Tuttavia, quando provo a passare i dati è quando sto correndo in un problema.

La prima cosa che ho provato è stato ...

[HttpPost] 
public HttpResponseMessage CreateAccount([FromBody]string email, [FromBody]string password) 

E io tipo

email: xyz, password: abc

nel corpo della richiesta di violinista. Quando faccio questo viene visualizzato un errore di 500

'Impossibile associare più parametri (' email 'e' password ') al contenuto della richiesta.'

Inoltre ho provato questo come un firma del metodo ...

[HttpPost] 
public HttpResponseMessage CreateAccount([FromBody]UserAccountRequestData data) 

con l'UserAccountRequestData essere un semplice POCO

public class UserAccountRequestData 
{ 
    public string Email { get; set; } 
    public string Password { get; set; } 
} 

E ho messo

{E-mail: xyz, password : abc}

o

dati: {Email: xyz, Password: abc}

nel corpo della richiesta. In entrambi i casi, tentando di popolare il POCO, riesco a raggiungere il metodo durante il debug, ma l'oggetto dati è sempre nullo.

Ho bisogno di capire come creare metodi API che accettano sia POCO fortemente tipizzati che altri che accettano più tipi primitivi come stringhe e int.

Grazie

risposta

17

è necessario impostare l'intestazione Content-Type per application/json e quindi fornire JSON valido.

{"Email":"xyz","Password":"abc"} 
+2

+1 per la risposta di Darrel Miller. Inoltre è possibile fare riferimento alla risposta data per [Invio di oggetti JSON a Web API] (http://stackoverflow.com/questions/13870161/sending-json-object-to-web-api). Ti dà un codice di esempio per la tua domanda. –