2010-01-09 3 views
0

Хорошо, мне нужна помощь, снова! По какой-то причине он не не работает, не знаю, почему .. ничего даже не появляется на мой запрос поймать ..Поддержка .NET Proxy - 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); 
     } 
    } 

Как я могу заставить его работать?

ответ

2

Похоже, вы пытаетесь использовать BackgroundWorker для выполнения этой операции, и при отсутствии более подробной информации о том, что не работает, я предполагаю, что это связано с тем, что вы не назначаете никакого результата или ошибки, которые могут быть подняты основной нитью.

Вы должны назначить результаты запроса в случае успеха:

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

Поскольку вы, кажется, делает несколько запросов, вы должны, вероятно, сделать результат List<string> или аналогичный.

Вы должны удалить блок Try/поймать и иметь дело с какими-либо ошибками в случае RunWorkerCompleted в 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

Спасибо Ли, я до сих пор не могу получить мою голову вокруг него .. Я не люблю прокси слишком много, есть ли в любом случае, когда я могу отправить вам весь проект C#, чтобы вы могли взглянуть? – Lawrence

Смежные вопросы