2013-12-20 4 views
0

В настоящее время я делаю проверку прокси с моим вводом Текстовое поле. Я получаю ошибку C#: индекс находился за пределами массива от прокси (123.34.123.45:8080).Индекс находился за пределами ошибки массива

Мои коды будут ...

string occoultProxy = "123.34.123.45:8080"; 
WebProxy proxy = new WebProxy(occoultProxy.Split(':')[0], Convert.ToInt32(occoultProxy.Split(':')[1])); //Error at this line 
// WebProxy(string Host, int Port) 

ОБНОВЛЕНО

я попробовал еще коды, но все еще есть код ошибки. Пожалуйста помоги.

string[] address = occoultProxy.Split(new[] { ':' }); 
MessageBox.Show(address[0].ToString()); 
MessageBox.Show(address[1].ToString()); 
WebProxy proxyHTTP = new WebProxy(address[0], Convert.ToInt32(address[1])); 

Выход

123.34.345.23 <!-- Some Proxy here, seems good here --> 
IndexOutOfRangeException was unhandled(Index was outside the bounds of the array.) 
+0

это работает для меня. Не существует ли проблема в получении occoultProxy? – ne2dmar

+0

Я предполагаю, что значение 'occoultProxy' является IP без номера порта. – Rik

+0

Я пробовал ваш образец и работает без проблем. Вы уверены, что строки, которые вы передали в инструкцию, всегда содержали точку с запятой? Поскольку вы позволяете вводить адреса пользователем, вы должны проверить строку для точки с запятой. – FoxHound

ответ

1

Будет ли это работать для вас?

 var occoultProxy = "123.34.123.45:8080"; 
     var parts = occoultProxy.Split(':'); 

     if (parts.Length == 2) 
     { 
      var proxy = new WebProxy(parts[0], Convert.ToInt32(parts[1])); 
     } 
     else 
     { 
      throw new AnExceptionToHandleInYourUi(); 
     } 
0

String.Split() не принимает ни одного символа в качестве параметра. См String.Split

Попробуйте изменить код

string[] address = occoultProxy.Split(new[] {':'}); 
WebProxy proxy = new WebProxy(address[0], Convert.ToInt32(address[1])); 
+0

Существует перегрузка, имеющая параметр params char [] '. 'public string [] Split ( \t params char [] separator )'. Вы можете называть его как 'occoultProxy.Split (':')' или 'occoultProxy.Split (':', '.')' С любым количеством параметров. –

+0

Да, понял, что после публикации. Думаю, я должен был запустить код первым. Однако я всегда использовал новый синтаксис [] {''}. –

5

Ваш вклад не должен иметь сегмент порта, вы можете иметь дело с этим:

WebProxy proxy = new WebProxy(new Uri("http://" + occoultProxy)); 
+0

или установить порт на 80 – Hogan

0

Если вы пытаетесь подключить локальный прокси-сервер с вашим local ip, проверьте, является ли значение occoultProxy «:: 1».

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