Переслать HTTP-заголовок

У меня есть приложение. Отправьте запрос в мой прокси-класс. Прокси должен проанализировать строку заголовка http (я так и сделал) и отправить запрос на сервер для получения видео.

Сначала медиакомпонент подключается к прокси:

var uri = new Uri("http://127.0.0.1:2233/files/1.mp4");
videoPlayer.Source = uri;
Play();

Прокси получает строку заголовка http

"GET /files/1.mp4 HTTP/1.1\r\nCache-Control: no-cache\r\nConnection: Keep-Alive\r\nPragma: getIfoFileURI.dlna.org\r\nAccept: */*\r\nUser-Agent: NSPlayer/12.00.7601.17514 WMFSDK/12.00.7601.17514\r\nGetContentFeatures.DLNA.ORG: 1\r\nHost: 127.0.0.1:2233\r\n\r\n"

Я заменяю хост:

"GET /files/1.mp4 HTTP/1.1\r\nCache-Control: no-cache\r\nConnection: Keep-Alive\r\nPragma: getIfoFileURI.dlna.org\r\nAccept: */*\r\nUser-Agent: NSPlayer/12.00.7601.17514 WMFSDK/12.00.7601.17514\r\nGetContentFeatures.DLNA.ORG: 1\r\nHost: myserver.ru\r\n\r\n"

Теперь прокси должен получать видео с сервера. Что я должен сделать?

1 ответ

При использовании.NET вам не нужно вручную создавать само сообщение HTTP. Вместо этого используйте классы в пространстве имен System.Net.Http для формирования и отправки HTTP-сообщения и обработки ответа.

Например, отправка сообщения HTTP GET на URL может быть такой простой:

var uri = new Uri("http://www.foobar.com/");
var client = new HttpClient();
string body = await client.GetStringAsync(uri);

Обратите внимание, что этот общий подход будет загружать все содержимое ресурса по указанному URI. В вашем случае вам может не понадобиться ждать загрузки всего видео, прежде чем вы начнете воспроизводить / обрабатывать / хранить его. В этом случае вы можете использовать HttpClient.ReadAsStream() метод, который будет возвращать поток, из которого вы можете читать, пока поток не закроется.

Другие вопросы по тегам