gdctld Ответов: 3

Как Читать полную веб-страницу на языке Си#


using System;
using System.Collections.Generic;
using System.Linq;
using System.ComponentModel;
using System.Data;
using System.Text;
using System.Net;
using System.IO;

/* I WRITE THIS PROGRAM TO GET WEB CONTENT ON INTERNET , BUT IT NOT WORK CORRECTLY. PLEASE HELP ME */


namespace GetHtmlFromInternet
{
    class Program
    {
        public static WebClient wClient = new WebClient();
            public static StreamWriter sw;
            public static TextWriter textWriter;
        /*I USE THIS FUNCTION TO READ WEB PAGE ON INTERNET BUT IT NOT WORK CORRECTLY ON SOME LINKS*/
            public static String readFromLink()
            {
                /* IT WORK CORRECTLY IF WE SET url = "http://vn.yahoo.com/?p=us"; BUT NOT OK WITH URL BELOW*/
                String url = "http://raovat.com/?rv=detail&idrv=527443&idcate=57&tt=vppnhatthanh@yahoo.com.vn";

                /* PLEASE HELP ME MAKE FUNCTION READFROMLINK RUNABLE WITH THIS LINK*/
                System.Net.WebClient client = new System.Net.WebClient();
                byte[] data = client.DownloadData(url);
                String html = System.Text.Encoding.UTF8.GetString(data);
                return html;


            }
            public static bool WriteTextFile(String fileName, String t)
            {

                try
                {
                    textWriter = new StreamWriter(fileName);
                }
                catch (Exception)
                {
                    return false;
                }

                try
                {
                    textWriter.WriteLine(t);
                }
                catch (Exception)
                {
                    return false;
                }
                textWriter.Close();
                return true;
            }
        static void Main(string[] args)
        {
            String saveFile = "C:/saveFromURL.txt";
            String reSultString = readFromLink();
            WriteTextFile(saveFile, reSultString);
        }
    }
}

3 Ответов

Рейтинг:
26

RaviRanjanKr

вы можете просто использовать данный код для чтения всей веб страницы

HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(URL);
myRequest.Method = "GET";
WebResponse myResponse = myRequest.GetResponse();
StreamReader sr = new StreamReader(myResponse.GetResponseStream(), System.Text.Encoding.UTF8);
string result = sr.ReadToEnd();
sr.Close();
myResponse.Close()

для получения более подробной информации вы можете пойти там[^] и там[^]


Albin Abel

Хороший ответ. Мой 5-й

Sergey Alexandrovich Kryukov

Правильно, мой 5-й.
--СА

Kim Togo

Вместо того чтобы просто предполагать, что кодировка всегда UTF8, проверьте с помощью myResponse.Набор символов, какая кодировка используется.

Рейтинг:
1

Kim Togo

Я сделаю то, что сделал Равиранджакр. Но добавьте еще немного проверки и кодирования.


HttpWebRequest request = (HttpWebRequest)WebRequest.Create(URL);

HttpWebResponse response = (HttpWebResponse)request.GetResponse();

if (response.StatusCode == HttpStatusCode.OK)
{
  Stream receiveStream = response.GetResponseStream();
  StreamReader readStream = null;

  if (response.CharacterSet == null)
    readStream = new StreamReader(receiveStream);
  else
    readStream = new StreamReader(receiveStream, Encoding.GetEncoding(response.CharacterSet));

  string data = readStream.ReadToEnd();
  response.Close();
  readStream.Close();
}


Рейтинг:
0

gdctld

// Равиранджакр , Ким Того ! Он все еще не может получить полный контент страницы , Пожалуйста, проверьте эту ссылку с помощью Вашего браузера и запустите мою программу с вашим кодом вставьте в функцию readFromLink ссылку следующим образом :
публичная статическая строка readFromLink()
{
Строка URL = "http://raovat.com/?rv=detail&idrv=527443&idcate=57&tt=vppnhatthanh@yahoo.com.vn";
HttpWebRequest request = (HttpWebRequest)WebRequest.Создать(URL);
запрос.метод get";
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Строковые данные=null;
если (ответ.Состояния == HttpStatusCode.ОК)
{
Поток receiveStream = ответ.GetResponseStream();
StreamReader readStream = null;
если (ответ.Набор символов == null)
readStream = новый StreamReader(receiveStream);
else readStream = new StreamReader(receiveStream, Encoding.GetEncoding(ответ.Набор символов));
data= readStream.ReadToEnd(); ответ.Close(); readStream.Закрывать();
}
возвращать данные;
}

/ Пожалуйста, помогите мне снова и снова .Я надеюсь получить ваши отзывы до тех пор, пока мы не сможем решить эту проблему!