Bonjour,
J'ai crée un projet Asp.MVC nomme e_bibliotheque(bibliotheque de classes)
La classe AuteurController contient une methode AfficherAuteurs, qui, pour s'executer, fait appel à un une instance serviceAuteur de la classe ServiceAuteur, d'une application console ConsommerAPI
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
40
41
42
43
44
45
46
47
48
49 using ConsommerAPI; using e_Bibliotheque.Models; using Entite; using System; using System.Threading.Tasks; using System.Web.Mvc; namespace e_Bibliotheque.Controllers { [RoutePrefix("/Auteur")] public class AuteurController : Controller { [Route("")] // GET: Auteur [HttpGet] public async Task<ActionResult>AfficherAuteurs() { VM_ListAuteurs modelAuteurs = new VM_ListAuteurs(); modelAuteurs.ListAuteurs = null; try { ServiceAuteur serviceAuteur = new ServiceAuteur(); //les modèles récupèrent les resultats recupérés + la vue les affiche modelAuteurs.ListAuteurs = await serviceAuteur.recupLesAuteursAsync(); return View(modelAuteurs); } catch(Exception ex) { Console.WriteLine("une erreur s'est produite" + ex.Message); return View(modelAuteurs); } }A l'execution j'ai cette erreur
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
40
41
42
43
44
45
46
47
48 namespace ConsommerAPI { public class ServiceAuteur { //adresse du serveur d'API private const string urlAPI = "http://localhost:59343/"; public async Task<IEnumerable<Auteur>> recupLesAuteursAsync() { using( HttpClient client = new HttpClient()){ // var objetReponse = await client.GetAsync($"{urlAPI}Auteur"); if (objetReponse.StatusCode == System.Net.HttpStatusCode.OK) { var objetContenu = objetReponse.Content; var stringContenu = await objetContenu.ReadAsStringAsync(); var listAuteur = JsonConvert.DeserializeObject<IEnumerable<Auteur>>(stringContenu); return listAuteur; } else if (objetReponse.StatusCode == System.Net.HttpStatusCode.NotFound) { return null; } else { var objetContenu = objetReponse.Content; var stringContenu = await objetContenu.ReadAsStringAsync(); throw new Exception("Un problème avec API : status = {objetReponse.StatusCode}, contenu : {stringContenu}"); } }//fin de Using }//fin de recupLesAuteursAsync()
La méthode GetAsync permet-elle de recuperer les données stockées uniquement sur un serveur ou eventuellement dans un IEnumerable<Auteur>.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 {StatusCode: 404, ReasonPhrase: 'Not Found', Version: 1.1, Content: System.Net.Http.StreamContent, Headers: { X-SourceFiles: =?UTF-8?B?QzpcVXNlcnNcTkhBUkJPTk5FXERvd25sb2Fkc1xlX0JpYmxpb3RoZXF1ZVNvbHV0aW9uXGVfQmlibGlvdGhlcXVlU29sdXRpb25cU2VydmV1ckFQSQ==?= Cache-Control: private Date: Mon, 11 Mar 2024 15:12:29 GMT Server: Microsoft-IIS/10.0 X-AspNet-Version: 4.0.30319 X-Powered-By: ASP.NET Content-Length: 3056 Content-Type: text/html; charset=utf-8 }}
Si elle ne permet de recuperer des infos que sur un serveur, il faudrait donc que consommerAPI soit en communication avec le ServeurAPI qui permet une connexion à la BDD.(cela fait 5 ans que j'ai commencé ce projet que je reprends aujourd'hui)
Est ce bien cela ?
Merci beaucoup de bien vouloir m'aider à resoudre cette situation car j'ai un peu de mal à m'y retrouver entre les connexions au serveur via PostAsync et via des repositories avec connexion BDD.
Merci beaucoup de votre aide pour que j'y voie plus clair, depuis tout ce temps.
Bien cordialement.
new_wave
Partager