我目前正在使用输入文本框进行代理检查。我收到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 :(得分:5)
您的输入必须没有端口段,您可以处理此问题:
WebProxy proxy = new WebProxy(new Uri("http://" + occoultProxy));
答案 1 :(得分: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();
}
答案 2 :(得分:0)
String.Split()不会将单个字符作为参数。见String.Split
尝试将代码更改为
string[] address = occoultProxy.Split(new[] {':'});
WebProxy proxy = new WebProxy(address[0], Convert.ToInt32(address[1]));
答案 3 :(得分:0)
如果您尝试使用本地IP连接本地代理,请检查occoultProxy的值是否为“:: 1”。