2010-01-09 4 views
0

Ok, j'ai encore besoin d'aide! Pour une raison quelconque, il ne fonctionne pas, aucune idée pourquoi .. rien ne semble même sur ma demande de capture ..Prise en charge du proxy .NET - HTTPWebRequest

public void load(object sender, DoWorkEventArgs e) 
    { 
     int repeat = 1; 
     int proxyIndex = 1; 
     if (listBox1.Items.Count == proxyIndex) //If we're at the end of the proxy list 
     { 
      proxyIndex = 0; //Make the selected item the first item in the list 
     } 
     try 
     { 
      int i = 0; 
      while (i < listBox1.Items.Count) 
      { 
       HttpWebRequest request = (HttpWebRequest)WebRequest.Create(textBox1.Text); 
       string proxy = listBox1.Items[1].ToString(); 
       string[] proxyArray = proxy.Split(':'); 
       WebProxy proxyz = new WebProxy(proxyArray[0], int.Parse(proxyArray[1])); 
       request.Proxy = proxyz; 
       using (HttpWebResponse response = (HttpWebResponse)request.GetResponse()) 
       { 
        using (StreamReader reader = new StreamReader(response.GetResponseStream())) 
        { 
         string str = reader.ReadToEnd(); 
        } 
       } 

        /*HttpWebRequest request = (HttpWebRequest)WebRequest.Create(textBox1.Text); 
        string proxy = listBox1.Items[i].ToString(); 
        string[] proxyArray = proxy.Split(':'); 
        WebProxy proxyz = new WebProxy(proxyArray[0], int.Parse(proxyArray[1])); 
        request.Proxy = proxyz; 
        HttpWebResponse response = (HttpWebResponse)request.GetResponse(); 
        StreamReader reader = new StreamReader(response.GetResponseStream()); 
        string str = reader.ReadToEnd(); 
        Thread.Sleep(100); 
        { 
         if (str != null) 
         { 
          listBox2.Items.Add("Starting connection."); 
          Thread.Sleep(1000); 
          { 
           listBox2.Items.Add("Waiting.."); 
           Thread.Sleep(500); 
           { 
            listBox2.Items.Add("Connection closed."); 
            repeat++; 
            continue; 
           } 
          } 
         } 
         else if (str == null) 
         { 
          listBox2.Items.Add("Reply was null, moving on."); 
          proxyIndex++; 
          repeat++; 
         } 
        } 
        */ 
       } 
      } 
     catch (Exception ex) //Incase some exception happens 
     { 
      MessageBox.Show(ex.Message); 
      return; 
      // listBox2.Items.Add("Error:" + ex.Message); 
     } 
    } 

Comment puis-je le faire fonctionner?

Répondre

2

Il semble que vous essayez d'utiliser BackgroundWorker pour effectuer cette opération, et en l'absence d'informations plus détaillées sur ce qui ne fonctionne pas, je suppose que c'est parce que vous n'attribuez aucun résultat ou les erreurs qui peuvent être détectées par le thread principal.

Vous devez affecter les résultats de la demande en cas de succès:

using (StreamReader reader = new StreamReader(response.GetResponseStream())) 
{ 
    e.Result = reader.ReadToEnd(); 
} 

Puisque vous semblez faire des demandes multiples, vous devriez probablement faire le résultat d'un List<string> ou similaire.

Vous devez retirer le bloc try/catch et de traiter des erreurs en cas RunWorkerCompleted du BackgroundWorker:

private void BackgroundWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) 
{ 
    if(e.Error != null) 
    { 
     MessageBox.Show("Error in async operation: " + ex.Message); 
    } 
    else 
    { 
     //process results 
    } 
} 
+0

Merci Lee, je ne peux toujours pas obtenir ma tête autour d'elle .. Je n'aime pas les procurations trop, y at-il de toute façon dans lequel je pourrais vous envoyer le projet C# pour que vous puissiez y jeter un coup d'œil? – Lawrence

Questions connexes