我有申请。它将请求发送到我的代理类。代理必须解析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"
现在代理必须从服务器获取视频。我该怎么办?
答案 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()
方法,该方法将返回您可以读取的流,直到流关闭。