重新发送HTTP标头

时间:2013-03-11 05:39:34

标签: c# http video-streaming

我有申请。它将请求发送到我的代理类。代理必须解析http头字符串(我这样做了)并将其重新发送到服务器以获取视频。

首先,mediacomponent连接到代理:

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 个答案:

答案 0 :(得分:0)

使用.NET时,您不必手动创建HTTP消息本身。相反,使用System.Net.Http namespace中的类来形成和发送HTTP消息并处理响应。

例如,向URL发送HTTP GET消息可以简单如下:

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

请注意,这种通用方法将在给定的URI下载资源的全部内容。在您的情况下,您可能不希望在开始播放/处理/存储之前等待整个视频下载。在这种情况下,您可能希望使用HttpClient.ReadAsStream()方法,该方法将返回您可以读取的流,直到流关闭。