0

我有申请。它向我的代理类发送请求。代理必须解析 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"

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

4

1 回答 1

0

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

于 2013-03-11T06:02:11.383 回答