C# Twilio 检索复合媒体



我正在尝试使用以下代码将合成媒体文件下载到我的硬盘驱动器中:

try
{
var uri = "https://video.twilio.com/v1/Compositions/" + sid + "/Media?Ttl=6000";
var request = (HttpWebRequest)WebRequest.Create(uri);
request.Headers.Add("Authorization", "Basic " + Convert.ToBase64String(Encoding.ASCII.GetBytes(_apiKeySid + ":" + _apiKeySecret)));
request.AllowAutoRedirect = false;
var responseBody = new StreamReader(request.GetResponse().GetResponseStream()).ReadToEnd();
var mediaLocation = JsonConvert.DeserializeObject<Dictionary<string, string>>(responseBody)["redirect_to"];
new WebClient().DownloadFile(mediaLocation, "D:\test.mp4");
}
catch (Exception ex)
{
var temp = ex.Message;
}

但是每次我收到此消息的异常时:"远程服务器返回错误:(302) FOUND。

请注意,此方法是在 Twilio 调用我在使用方法创建新合成时设置的StatusCallback方法之后调用CompositionResource.CreateAsync

因此,问题是请求被重定向到新位置,因此我所要做的就是允许请求的重定向,然后通过将流对象复制到文件来下载文件,如下所示:

var uri = "https://video.twilio.com/v1/Compositions/" + sid + "/Media?Ttl=6000";
var request = (HttpWebRequest)WebRequest.Create(uri);
request.Headers.Add("Authorization", "Basic " + Convert.ToBase64String(Encoding.ASCII.GetBytes(_apiKeySid + ":" + _apiKeySecret)));
request.AllowAutoRedirect = true;
var responseBody = (await request.GetResponseAsync()).GetResponseStream();
using (var fs = File.Create(@"D:test.mp4"))
{
responseBody.CopyTo(fs);
}

> 302 Found 表示您要查找的资源已移动到其他 URL。检查响应的位置标头以查看新 URL 是什么。

302 找到

发现超文本传输协议 (HTTP) 302 重定向状态 响应代码指示请求的资源已 暂时移动到位置标头提供的 URL。一个浏览器 重定向到此页面,但搜索引擎不会更新其链接 资源(在"SEO语言"中,据说"链接汁"不是 发送到新网址)。

最新更新