C# Twilio 检索组合媒体

标签 c# .net asp.net-mvc twilio twilio-api

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

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

关于C# Twilio 检索组合媒体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51676722/

相关文章:

.net - 如何用回调包装 3rdParty 函数以便能够等待回调完成然后从回调函数返回结果?

c# - 为什么将类移动到 Visual Studio 中的新文件夹中会造成破坏?

asp.net - 我应该如何确保此表中的值对是唯一的?

.net - 在应用程序中集中错误消息的最佳方法是什么?

c# - 添加了 OracleCommand 参数但抛出异常

c# - 当调用递归泛型接口(interface)上的扩展方法时,结构实例是否会被装箱?

C#初学者数组

c# - 导致 UI 卡住或变慢的操作事件

c# - MVC 5 无法使用 Linq to SQL 类创建 Controller

c# - 将python转换为c#的工具