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