Bonjour,
Je viens vous demander un peu d'aide car j'ai un problème qui me semble bizarre sur un de mes projets. Je dois faire un GET / , parser la page pour récupérer les images et faire un GET de chaque image pour les sauvegarder. Le problème c'est qu'après 3 GET mon application freeze complètement ..
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 // je créé ma requête avec (HttpWebRequest)WebRequest.Create() HttpWebRequest myHttpWebRequest = HTTPMethod.makeRequest(url + "/"); //j'exécute ma première requete sans soucis avec HttpWebRequest.GetReponse() HttpWebResponse myHttpWebResponse = HTTPMethod.getResponseSync(myHttpWebRequest,console); // je parse la réponse pour récupérer une list d'images à récupérer List<String> imgQueue = HTTPMethod.getObjectsToRequest(myHttpWebResponse); //puis je fais une boucle pour faire un get sur chacune des mes images : for(int i = 0; i < imgQueue.Count; i++){ console.AppendText("\t\t " + url + imgQueue[i] + "\n"); myHttpWebRequest = HTTPMethod.makeRequest(url + imgQueue[i]); console.AppendText("\t\t requete créée \n"); console.ScrollToCaret(); myHttpWebResponse = HTTPMethod.getResponseSync(myHttpWebRequest); console.AppendText("\t\t retour ok \n"); console.ScrollToCaret(); Thread.Sleep(5000); }
Mes deux autres dans HTTPMethod que j'appelle pour créer et exécuter mes requêtes :
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 internal static HttpWebRequest makeRequest(String url, Boolean pipelined = false, Boolean keepAlive = false, String method = "GET") { HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://" + url); request.Method = method; request.KeepAlive = keepAlive; request.Pipelined = pipelined; return request; } internal static HttpWebResponse getResponseSync(HttpWebRequest request, System.Windows.Forms.RichTextBox console = null) { try { HttpWebResponse response = (HttpWebResponse)request.GetResponse(); if (console != null) { console.AppendText("\tHTTP Request Headers :\n " + request.Headers + "\n"); console.AppendText("\tHTTP Response Headers :\n" + response.Headers + "\n"); console.AppendText("\t'Pipelined' property is:" + request.Pipelined + "\n"); console.AppendText("\t'Keep-Alive' property is:" + request.KeepAlive + "\n"); console.ScrollToCaret(); } return response; } catch (WebException e) { console.AppendText("\tMain Exception raised!\n"); console.AppendText("\tMessage:" + e.Message+"\n"); console.AppendText("\tStatus:" + e.Status + "\n"); } catch (Exception e) { console.AppendText("\tMain Exception raised!\n"); console.AppendText("\tMessage:" + e.Message + "\n"); console.AppendText("\tSource:" + e.Source + "\n"); } return null; }
donc voilà, c'est un code plutôt simple, je ne vois pas pourquoi il ne fonctionne pas après seulement 3 requêtes .. Pour mon test, j'ai 1 page web avec 9 images donc j'arrive à "getter" la page + les deux premières images.
En espérant que quelqu'un puisse me donner un peu d'aide.
merci d'avance
Partager