Char Массив байтов Массив HttpWebResponse HttpWebRequest возвращает "System.Net.HttpWebRequest" - PullRequest
0 голосов
/ 06 декабря 2010

Я пытаюсь запросить веб-страницу с помощью WebRequest.GetResponse ();и преобразовать этот ответ в chararray, чтобы я мог отсортировать массив и получить любые теги HREF, которые есть на странице.Проблема в том, что где-то в моем коде ответ превращается в «System.Net.HttpWebRequest», а не в HTML-код, который следует извлечь со страницы.

Код для получения массива char:

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(urlTextBox.Text);
            request.UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.7 (KHTML, like Gecko) Chrome/7.0.517.44 Safari/534.7";
            HttpWebResponse response = (HttpWebResponse)request.GetResponse();
            System.Text.UTF8Encoding encoding = new System.Text.UTF8Encoding();
            bytearray = encoding.GetBytes(Convert.ToString(response));
            chararray = encoding.GetChars(bytearray);

Код для поиска ссылок (закомментирован для устранения неполадок):

for (int i = 0; i < chararray.Length; i++)
{
    // Get all HREFs
    if (i < 500 & chararray[i] == 'h' & chararray[i + 1] == 'r' & chararray[i + 2] == 'e' & chararray[i + 3] == '=' & chararray[i + 4] == '"')
    {
        for (int tempi = 0; bytearray[i + 4 + tempi] != '"';)
        {
             tempstring = tempstring + chararray[i + 4 + tempi].ToString();
        }
        urlarray[urlarray.Length + 1] = tempstring;
        i = i + 4;
    }
}
scrapeLink1.Text = urlarray[1];

Если я что-то пропустил, илинужна дополнительная информация, дайте мне знать.

1 Ответ

1 голос
/ 06 декабря 2010

Ответом является stream , с которого вы должны сначала прочитать.

HttpWebRequest request = WebRequest.Create(urlTextBox.Text) as HttpWebRequest;
if (request != null)
{        
    request.UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.7 (KHTML, like Gecko) Chrome/7.0.517.44 Safari/534.7";
    using (HttpWebRepsonse response = request.GetResponse() as HttpWebResponse)
    using (StreamReader rdr = new StreamReader(response.GetResponseStream())
    {
        string result = rdr.ReadToEnd();
    }
}
...