2013-03-11 87 views
0

我有应用程序。它发送请求到我的代理类。代理服务器必须解析http标头字符串(我完成了这个),并重新发送请求到服务器以获取视频。重新发送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" 

我replase主持人:

"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" 

现在代理必须从服务器获取视频。我必须做什么?

+2

很难说出这里要问什么。这个问题含糊不清,含糊不清,不能以目前的形式合理回答。 – 2013-03-11 05:40:26

+0

我只需要做一个视频流和缓存。代理将视频保存在文件系统中,并将其从服务器流式传输到媒体组件。 – user2155564 2013-03-11 05:45:07

+0

@ user2155564你用什么来将请求发送到服务器? HttpClient的? HttpRequest的?其他? – rhughes 2013-03-11 05:45:25

回答

0

使用.NET时,您不必手动创建HTTP消息本身。相反,使用System.Net.Http namespace中的类来形成并发送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()方法,该方法将返回一个可读取的流,直到流关闭。

相关问题