【问题标题】:Resend HTTP header重新发送 HTTP 标头
【发布时间】:2013-03-11 05:39:34
【问题描述】:

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

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

【问题讨论】:

  • 很难说这里要问什么。这个问题模棱两可、含糊不清、不完整,无法以目前的形式得到合理的回答。
  • 我只需要制作视频流和缓存。代理会将视频保存在文件系统中并将其从服务器流式传输到媒体组件。
  • @user2155564 你用什么向服务器发送请求?客户端?请求?其他?
  • @rhughes 从媒体组件请求代理 var uri = new Uri("127.0.0.1:2233/files/.mp4"); Play(); 我是菜鸟,我知道。
  • @user2155564 谢谢。你能用那个代码更新你的问题吗?

标签: c# http video-streaming


【解决方案1】:

使用 .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() 方法,该方法将返回一个流,您可以从中读取,直到该流关闭。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-11-27
    • 2015-02-22
    • 1970-01-01
    • 2021-10-21
    • 2012-01-09
    • 1970-01-01
    相关资源
    最近更新 更多