Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - .NET

Страница: 1 |

 

  Вопрос: Перехват искомого текста в потоке Добавлено: 12.05.11 16:46  

Автор вопроса:  WHorse
Доброго времени суток!

Моя задача: сделать web-запрос по заданному адресу и вводимому пользователем значению. Пустить полученную страницу в поток и перехватить ключевые фразы "ничего не найдено", либо "результаты поиска:", затем выполнить соответствующие действия.

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

Привожу "голый" код без перехвата ошибок:

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim VIN_URL As Net.HttpWebRequest = Net.HttpWebRequest.Create("http://www.vugone.info/base/find/?vin=" & TextBox1.Text)
        Dim VIN_Response As Net.HttpWebResponse = VIN_URL.GetResponse()
        Dim VIN_Stream As New IO.StreamReader(VIN_Response.GetResponseStream, System.Text.Encoding.GetEncoding("UTF-8"))
        Dim VIN_Line As String = VIN_Stream.ReadLine
        Dim VIN_Result As New System.Text.RegularExpressions.Regex("^*Ничего не найдено*$")
        TextBox2.Text = VIN_Line
        If (VIN_Result.IsMatch(VIN_Line).ToString) Then
            MsgBox("OK")
        Else
            MsgBox("Nothing")
        End If
    End Sub


Подскажите пожалуйста, в чем моя ошибка (возможно следует задать построчный перебор и рассматривать каждую строку) и как можно перехватить искомый участок текста и сравнить его с шаблоном (либо пустить в условие ЕСЛИ... ТО). Спасибо!

Ответить

  Ответы Всего ответов: 2  

Номер ответа: 1
Автор ответа:
 EROS



Вопросов: 58
Ответов: 4255
 Профиль | | #1 Добавлено: 12.05.11 23:59
Первое что бросилось в глаза:
VIN_Stream.ReadLine

Ты читаешь из всего ответа только первую строку. а первая строка там будет тег {html}
Тебе надо получить всю страницу ответа целиком и уже там искать нужные фразы
"^*Ничего не найдено*$"

Достаточно часто ошибки бывают в самом регулярном выражении.
VIN_Result.IsMatch(VIN_Line).ToString

IsMatch возвращает булеву величину, поэтому вызов ToString не только не обязателен но и является абсолютно ненужным

Ответить

Номер ответа: 2
Автор ответа:
 WHorse



Вопросов: 5
Ответов: 7
 Профиль | | #2 Добавлено: 20.05.11 17:22
Спасибо! Изменил ReadLine на ReadToEnd; исправил лишние символы в регулярном выражении; убрал ToString =и всё заработало! :)

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам