0

基本上,我将文本框中的随机行分成 4 部分:代理、代理 ip,如果用户提供了用户名和密码,它们将成为第 3 部分和第 4 部分。

如果用户没有提供代理凭据,我不希望使用它们,并且只提供了代理 ip 和端口。这是我的代码:

If SwitchButton2.Value = True Then
                            randomline = RandomNumbers.Next(proxybox.Lines.Length)
                            Dim s As String = proxybox.Lines(randomline)
                            RandomProxy = Split(s, ":", , CompareMethod.Text)
                            request.Proxy = New WebProxy(RandomProxy(0).ToString & ":" & RandomProxy(1).ToString)

                            Try
                                If RandomProxy(2) And RandomProxy(3) IsNot Nothing Then
                                    request.UseDefaultCredentials = False
                                    request.Proxy.Credentials = New System.Net.NetworkCredential(RandomProxy(2).ToString, RandomProxy(3).ToString)
                                End If

                            Catch
                                MessageBox.Show("no credentials")
                            End Try
                        End If

我在这里遇到了 If 语句的问题:

Try
                            If RandomProxy(2) And RandomProxy(3) IsNot Nothing Then
                                request.UseDefaultCredentials = False
                                request.Proxy.Credentials = New System.Net.NetworkCredential(RandomProxy(2).ToString, RandomProxy(3).ToString)
                            End If

                        Catch
                            MessageBox.Show("no credentials")
                        End Try

我每次都抛出异常,我做错了什么?我只希望在提供代理凭据时使用它们,如果没有则继续。

4

1 回答 1

0

您需要分别测试每个值:

If RandomProxy(2) IsNot Nothing AndAlso RandomProxy(3) IsNot Nothing Then

在尝试使用它们之前,您还应该测试数组中是否存在足够的元素:

If RandomProxy IsNot Nothing 
AndAlso RandomProxy.Length >= 4
AndAlso RandomProxy(2) IsNot Nothing 
AndAlso RandomProxy(3) IsNot Nothing Then

最后

于 2013-09-18T03:43:18.030 回答