2016-11-09 4 views
0

J'ai une application Xamarin à l'aide Flurl, avec le poste suivant à un api WebFlurl Message non retour de Web api

Xamarin App:

private async Task<LoginResponse> processLogin() 
    { 
     try 
     { 

      return await "http://192.168.0.12:60257/api/loginapi/Login".WithTimeout(10).PostJsonAsync(new { username = "fsdafsd", password = "gdfgdsf" }).ReceiveJson<LoginResponse>(); 
     } 
     catch (Exception e) 
     { 
      return new LoginResponse { ResponseStatusCode = -1 }; 
     } 
    } 

Web Api:

public LoginResponse Login([FromBody]LoginRequest loginRequest) 
{ 
    var result = new LoginResponse(); 

    try 
    { 
     var user = this.UserManager.FindAsync(loginRequest.username, loginRequest.password); 

     if (user != null) 
     { 
      result.ResponseStatusCode = 1; 
     } 
     else 
     { 
      result.ResponseStatusCode = 0; 
     } 

    } 
    catch (Exception e) 
    { 

     result.ResponseStatusCode = -1; 
    } 

    return result; 

} 

Je peux voir ma méthode Web Api se faire toucher, et elle renvoie le type d'objet attendu, pas mon application Xamarin continue d'attendre sur le Flurl Post. Est-ce que quelqu'un peut conseiller ce que je pourrais faire mal?

MISE À JOUR:

J'ai remarqué que ce qui suit fonctionne, mais ce n'est pas idéal:

résultat dynamique = attendre "http://192.168.0.12:60257/api/loginapi/Login" .PostJsonAsync (nouveau {nom d'utilisateur = "fsdafsd", mot de passe = « gdfgdsf "}). ReceiveJson();

+0

Veuillez afficher la définition complète de LoginResponse –

Répondre

0

L'a corrigé. Pour une raison quelconque, c'était le type que j'essayais de retourner. Changer le type de variable d'objet en "dynamic" a corrigé ceci, et m'a permis de désérialiser correctement l'objet. Dynamic result = "http://192.168.0.12:60257/api/loginapi/Login" .PostJsonAsync (nouveau {nom d'utilisateur = "fsdafsd", password = "gdfgdsf"}). ReceiveJson();

Renvoie un objet dynamique avec les propriétés attendues dans la structure normale.

Si quelqu'un peut éclairer ma pourquoi je ne pouvais pas faire:

LoginRequest résultat = ...

Il serait apprécié.