Различные результаты при использовании WebRequest и WebClient - PullRequest
1 голос
/ 02 сентября 2011

У нас есть текстовый файл, который генерируется автоматически и помещается на веб-сервер. Задача - прочитать файл построчно и вставить записи в базу данных. Следующий код находится в C #:

            WebRequest request = WebRequest.Create(url);
            WebResponse response = request.GetResponse();
            StreamReader r = new StreamReader(response.GetResponseStream());

            while (r.Peek() > -1)
            {
                string s = r.ReadLine().Trim();
                //insert string into a db.
            }

Когда я делаю это, я постоянно получаю весь файл в диапазоне от 9000 до 10000 строк. С другой стороны, когда я использую следующее, иногда я получаю усеченный файл (меньше строк)

            WebClient client = new WebClient();
            StreamReader r = new StreamReader(client.OpenRead(url));

            while (r.Peek() > -1)
            {
                string s = r.ReadLine().Trim();
                //insert string into a db.
            }

Может кто-нибудь объяснить разницу? Почему результаты будут другими? У меня сложилось впечатление, что WebClient - это просто оболочка HttpWebRequest.

1 Ответ

0 голосов
/ 02 сентября 2011

используя метод Peek, вы гарантированно получите полную линию, готовую к красному.

Могу поспорить, что вы получаете неполные строки (фактически ломающиеся в текущей позиции потока).

На самом деле, я не думаю, что это связано ни с одним из этих двух классов, а с тем, как вы читаете результат.

Вы пробовали WebClient.DownloadString () метод?

...