为了账号安全,请及时绑定邮箱和手机立即绑定

C# Twilio 检索合成媒体

C# Twilio 检索合成媒体

C#
德玛西亚99 2021-11-14 15:49:22
我正在尝试使用以下代码将合成媒体文件下载到我的硬盘中: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方法创建新组合时设置的方法之后调用的。
查看完整描述

2 回答

?
蓝山帝景

TA贡献1843条经验 获得超7个赞

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


        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);

        }


查看完整回答
反对 回复 2021-11-14
?
暮色呼如

TA贡献1853条经验 获得超9个赞

302 Found 表示您要查找的资源已移动到不同的 URL。检查响应的Location Header以查看新 URL 是什么。

302 发现

超文本传输协议 (HTTP) 302 Found 重定向状态响应代码表示请求的资源已临时移动到 Location 标头给出的 URL。浏览器重定向到此页面,但搜索引擎不会更新其指向资源的链接(在“SEO-speak”中,据说“link-juice”不会发送到新 URL)。


查看完整回答
反对 回复 2021-11-14
  • 2 回答
  • 0 关注
  • 196 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信