Веб-запрос Получить ответ не удается со второй попытки
Я написал программу, которая ищет имя пользователя на веб-сайте и загружает его основную HTML-страницу, находит ссылку на следующую страницу и скачивает ее и так далее. Когда я запускаю программу в первый раз, ответ get для поиска работает правильно, а ответ get для загрузки всех html-страниц работает правильно. Тем не менее, когда я делаю второй поиск, получить ответ не удается для поиска. Я подумал, что, возможно, это был сервер, позволяющий выполнять столько запросов за определенный период времени, но это не так. Когда я закрываю свою программу и запускаю ее снова, все снова работает нормально. Почему ответ get терпит неудачу при любых попытках, кроме начальной? Вы не можете определить веб-запрос как новый, и кажется, что он не может закрыть веб-запрос, как только он получит ответ на освобождение ресурсов. Это потому, что я запускаю весь процесс в фоновом режиме? Я не знаю что не так. Я всегда мог сделать столько поисков, сколько хотел только вчера...
Вот мой код для формы поиска:
Private Sub FormSearch_Load(sender As Object, e As EventArgs) Handles MyBase.Load
'if the user name is empty then initialize it
If My.Settings.UserName = "" Then
My.Settings.UserName = ""
End If
'if the current url is empty then initialize it
If My.Settings.CurrentURL = "" Then
My.Settings.CurrentURL = ""
End If
My.Settings.Save()
End Sub
Private Sub TextBoxUserName_TextChanged(sender As Object, e As EventArgs) Handles TextBoxUserName.TextChanged
'if the text length of the text box is greater then zero
If TextBoxUserName.TextLength > 0 Then
'enable the search button
ButtonSearch.Enabled = True
Else
'disable the search button and set focus on the text box
ButtonSearch.Enabled = False
TextBoxUserName.Focus()
End If
End Sub
Private Sub ButtonSearch_Click(sender As Object, e As EventArgs) Handles ButtonSearch.Click
'trim the text box of any spaces
My.Settings.UserName = Trim(TextBoxUserName.Text)
'if the user name is not equal to null
If My.Settings.UserName <> "" Then
'set the current url and test if it exists
My.Settings.CurrentURL = "*url here*"
If URLExists(My.Settings.CurrentURL) = True Then
'save the settings
My.Settings.Save()
'return ok for the dialog result and close the form
Me.DialogResult = Windows.Forms.DialogResult.OK
Me.Close()
Else 'cannot find the account
'set the text box text to null and set focus on it
TextBoxUserName.Text = ""
TextBoxUserName.Focus()
End If
End If
End Sub
Private Function URLExists(url As String) As Boolean
'create a new uri
Dim uriURL As New Uri(url)
'create a new web request of the uri
Dim wrRequest As WebRequest = WebRequest.Create(uriURL)
'set the web request timeout and method
wrRequest.Timeout = 30000
wrRequest.Method = "GET"
'create a new web response
Dim wrResponse As WebResponse
Try
'if the response succeeds then return true
wrResponse = wrRequest.GetResponse
Return True
Catch ex As Exception 'the response failed so return false
LabelMessage.Text = ex.Message
Return False
End Try
End Function