Bonjour,
J'ai crée un service qui permet d'ajouter des auteurs et des livres en base de données.
Le projet de départ est le service Web e-bibliotheque, qui fait appel aux méthodes de la classe ServiceAuteur d'une application Console ConsommerAPI.
ConsommerAPI fait appel au service web ServeurAPI qui permet l'ajout en BDD d'un auteur.
Dans la classe ServiceAuteur, j'ai crée cette constante avec cette adresse, qui est celle que je vois quand je vais dans la barre des tâches au niveau du serveur IISExpress(voir capt ecran)
J'ai également ajouté cela au niveau du Namespace
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 private const string urlAPI = "http://localhost:41380/api/";
La méthode AjouterUnauteur de la classe ServiceAuteur est la suivante
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 [RoutePrefix("api/Auteur")]
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39 [HttpPost] [Route("auteur")] public async Task<Auteur> AjouterUnAuteur(Auteur auteur) { HttpResponseMessage objetReponse =null; try { HttpClient client = new HttpClient(); //sérialization d'un auteur passé en paramètre au format JSON //la classe de base JsonMediaTypeFormatter gère la sérialisation et la désérialisation des objets fortement typés à l'aide de l'ObjectContent. ObjectContent<Auteur> content = new ObjectContent<Auteur>(auteur, new JsonMediaTypeFormatter()); //la méthode PostAsync envoie une requête asynchrone POST vers le serveur d'API à une méthode Post objetReponse = await client.PostAsync($"{urlAPI}Auteur/", content); //si ce POST s'est bien effectué if (objetReponse.IsSuccessStatusCode) { return auteur; }//fin de if else if (objetReponse.StatusCode == System.Net.HttpStatusCode.NotFound) { //l'instruction return null concerne une fonction renvoyant un objet , l'instruction return concerne une fonction ne renvoyant rien, c'est à dire avec le type de retour void return null; }//fin de else }//fin de try catch(Exception ex) { Console.WriteLine( $"Un problème avec API : status = {objetReponse.StatusCode}"); Console.WriteLine(ex.Message); }//fin de catch return null; }//fin de AjouterUnAuteur
Chaque fois que je débogue, au niveau de la cette méthode , j'ai une erreur au niveau de cette instruction
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 objetReponse = await client.PostAsync($"{urlAPI}Auteur/", content);{StatusCode: 404, ReasonPhrase: 'Not Found', Version: 1.1, Content: System.Net.Http.StreamContent, Headers:
{
X-SourceFiles: =?UTF-8?B?QzpcVXNlcnNcaGFyQDQzXERvY3VtZW50c1xlX2JpYmxpb3RoZXF1ZVxlLUJpYmxpb3RoZXF1ZVxhcGlcQXV0ZXVyXA==?=
Cache-Control: private
Date: Tue, 16 Jan 2024 14:40:08 GMT
Server: Microsoft-IIS/10.0
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
Content-Length: 3300
Content-Type: text/html; charset=utf-8
}}
J'ai tout essayé (si, si )pour tenter de résoudre ce problème, mais sans succès,et tourne en rond (notamment ajouter [HttpPost]
[Route("auteur")] au niveau des methodes de ServiceAuteur, ) mais ne sais plus où me diriger pour resoudre ce pb.
Je vous informe que j'ai ajouté la reference ConsommerApi au projet e-bibliotheque et que j'ai ajouté la reference ServeurAPI au projet ConsommerApi , qui , au niveau de ServiceAuteur doit pouvoir accéder au Serveur API.
Merci beaucoup à vous de votre aide car je ne m'y retrouve plus malgré mes nombreuses tentatives de resoudre ce pb!
Bien cordialement.
new_wave
Partager