2015-09-14 3 views
0

Mon Http code client est: -Comment appeler une action API Web MVC avec le client Http

function GetWebApiClient() { 
    var client = new HttpClient(); 
    client.BaseAddress = new Uri(http://localhost:68751); 
    client.DefaultRequestHeaders.Accept.Clear(); 
    client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); 
    return client; 
} 

function sendRequest() { 
    using (var client = GetWebApiClient()) 
    { 
      HttpResponseMessage x = await client.GetAsync("api/XYZ/" + somevalue+ "/"); 
    } 
} 

code du contrôleur: -

public class XYZ : ApiController 
{ 
    [System.Web.Mvc.AllowAnonymous] 
    public string ABC(string id) 
    { 
      //need to call this function from client 
      return ""; 
    } 
} 

chaque fois que j'envoie demande, il revient avec 400 Mauvaise demande.

+0

ne devrait pas y avoir des guillemets doubles autour de votre URL dans la nouvelle URI (... ligne pourrait-il être aussi simple? comme votre méthode de contrôleur s'appelle ABC, mais que vous appelez api/XYZ? –

+0

Essayez d'ajouter l'attribut 'FromUri' pour le paramètre' id'. Reportez-vous également à ce lien http://www.asp.net/web-api/ aperçu/avancé/appel-a-web-api-d'un client-net – Karthik

Répondre

0

Votre nom de méthode doit avoir le mot clé "Get" ou l'attribut HttpGet ou il ne sait pas quelle méthode exécuter en fonction de votre méthode Http.

public class XYZ : ApiController 
{ 
    [System.Web.Mvc.AllowAnonymous] 
    public string GetABC(string id) 
    { 
     //need to call this function from client 
     return ""; 
    } 
} 

OU

public class XYZ : ApiController 
{ 
    [System.Web.Mvc.AllowAnonymous] 
    [HttpGet] 
    public string ABC(string id) 
    { 
     //need to call this function from client 
     return ""; 
    } 
} 

Voir ici pour plus de détails: WebApi Routing Documentation

+0

Merci. J'utilisais l'authentique ation de MVC dans la fonction apiController, c'est pourquoi cela ne fonctionnait pas. Je l'ai changé en HTTP et ça a marché pour moi. – user3894514