0

J'ai un WEB API qui ont CRUD opération. Pour tester, j'ai créé un Console application. Créer et GET tous les détails fonctionnent bien. Maintenant, je veux obtenir le produit en utilisant le champ id. Ci-dessous mon codeGET tous les produits en utilisant le champ id

static HttpClient client = new HttpClient(); 
static void ShowProduct(Product product) 
    { 

     Console.WriteLine($"Name: {product.Name}\tPrice: {product.Price}\tCategory: {product.Category}", "\n"); 
    } 
static async Task<Product> GetProductAsyncById(string path, string id) 
    { 
     Product product = null; 
     HttpResponseMessage response = await client.GetAsync(path,id); 
     if (response.IsSuccessStatusCode) 
     { 
      product = await response.Content.ReadAsAsync<Product>(); 
     } 
     return product; 
    } 
case 3: 

        Console.WriteLine("Please enter the Product ID: "); 
        id = Convert.ToString(Console.ReadLine()); 

        // Get the product by id 
        var pr = await GetProductAsyncById("api/product/", id); 
        ShowProduct(pr); 

        break; 

A client.GetAsync(path,id) l'id me donne erreur de cannot convert string to system.net.http.httpcompletionoption. Pour cela, j'ai vérifié tous les articles qui s'y rapportent. Mais toujours incapable de trouver la bonne solution.

Toute aide serait très appréciée

+0

J'ai trouvé quelques solutions [ici] (https://stackoverflow.com/questions/14520762/system-net-http-httpcontent-ne-contient-pas-une-définition-pour-readasasync-an). S'il vous plaît essayez-le. –

Répondre

2

Vous obtenez cette erreur parce qu'il n'y a pas de méthode GetAsync() qui accepte comme second argument string.

En outre, faire GET demande, vous devez passer id dans l'URL, à savoir si votre URL api est quelque chose comme ceci: http://domain:port/api/Products, votre URL de requête devrait être http://domain:port/api/Products/idid est l'identifiant du produit que vous souhaitez obtenir.

changement que vous appelez à GetAsync() par:

HttpResponseMessage response = await client.GetAsync(path + "/" +id); 

ou si C# 6 ou plus:

HttpResponseMessage response = await client.GetAsync(path + $"/{id}"); 
+0

Que ce qui me manquait. – faisal1208