Задать вопрос
@WayMax

Как получить поток данных через http?

Есть сервис который по http отдает данные. Считываю данные таким образом:
WebClient client = new WebClient();
string s = client.DownloadString("http://213.125.32.5:83/axis-cgi/operator/param.cgi?action=list&group=Brand.ProdShortName");

В результате в s получаю Brand.ProdShortName=AXIS P3367.

Каким образом считать поток данных (постоянно обновляемый) по адресу
http://213.125.32.5:83/axis-cgi/motion/motiondata.cgi?group=0
?
В браузере это выглядит так:
--axismdb
Content-Type: text/plain
group=0;level=0;threshold=15;
--axismdb
Content-Type: text/plain
group=0;level=0;threshold=15;
--axismdb
Content-Type: text/plain
group=0;level=0;threshold=15;

... и т.д. бесконечное получение данных
  • Вопрос задан
  • 250 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
mindtester
@mindtester Куратор тега C#
http://iczin.su/hexagram_48
Есть сервис который по http отдает данные. Считываю данные таким образом:

WebClient client = new WebClient();
string s = client.DownloadString("213.125.32.5:83/axis-cgi/operator/param.cgi?action...");

В результате в s получаю Brand.ProdShortName=AXIS P3367.

уточним, на момент ответа, в данном фрагменте кода, запрос именно такой
http://213.125.32.5:83/axis-cgi/operator/param.cgi?action=list&group=Brand.ProdShortName

так вот, в браузере это выглядит так же как и у вас
3yytnzc.png
запрос
http://213.125.32.5:83/axis-cgi/motion/motiondata.cgi?group=0
у меня в браузере выглядит несколько иначе (но может и тоже практически так же.. у вас какое то логгирование? у меня просто отображение страницы в FF)
UiZBSYy.png

как итог, думаю шарповские функции работают вполне корректно. просто вам надо быть внимательнее с запросами

ps если речь о том что данные по второму запросу постоянно обновляются, копните в сторону потоков - https://docs.microsoft.com/ru-ru/dotnet/api/system...

pps
набросок ))
using System;
using System.IO;
using System.Net;
using System.Text;

namespace WebStream
{
    static class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("let's begin..\n");
            var myWebClient = new WebClient();
            var myStream = myWebClient.OpenRead("http://213.125.32.5:83/axis-cgi/motion/motiondata.cgi?group=0");
            var sr = new StreamReader(myStream);
            while (!sr.EndOfStream)
            {
                var line = sr.ReadLine();
                // возможно эту проверку можно и убрать, это как вам удобнее
                if (!string.IsNullOrEmpty(line))
                    Console.WriteLine(line);
            }
            myStream.Close();
        }
    }
}
.. естественно совершенству нет предела. тут не учтена ни какая возможность выхода вообще. не рассмотрены варианты async (а они есть в природе). но как proof of concept пойдет )). уже гораздо лучше чем ничего ))

удачи!
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы