接收二进制 wav 音频文件的 GET 请求
GET request that receives a binary wav audio file
我正在尝试发出 Twilio GET 请求以从以下 url 检索 wav 文件:https://api.twilio.com/2010-04-01/Accounts/accntsid/Recordings/pathsid.wav
我当前的代码是:
public string Get(string url)
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
using (Stream stream = response.GetResponseStream())
using (StreamReader reader = new StreamReader(stream))
{
return reader.ReadToEnd();
}
}
然而,这个 returns "RIFF??"
其中 "?"
代表一些奇怪的特殊字符。所以我显然没有正确阅读流。根据 API 文档,带有 ".wav"
扩展名的二进制 WAV 音频文件返回 mime 类型 "audio/x-wav"
。我需要设置一个字节数组吗?目的是将这个 .wav 转换成 base64 字符串。
干杯
是的,您不应该对二进制数据使用 StreamReader
,您需要将其作为 byte
数组处理,即:
public byte[] Get(string url)
{
var request = (HttpWebRequest)WebRequest.Create(url);
using (var response = (HttpWebResponse)request.GetResponse())
using (var stream = response.GetResponseStream())
using (var memoryStream = new MemoryStream())
{
stream.CopyTo(memoryStream);
return memoryStream.ToArray();
}
}
对于这种情况,HttpWebRequest
不是必需的,您可以只使用 WebClient.DownloadData
来避免所有 stream
处理,即
public byte[] Get(string url)
{
using (var client = new WebClient())
{
return client.DownloadData(url);
}
}
请阅读你的最后一句话 - 如果你想要 base64,你可以在 byte
数组
上调用 Convert.ToBase64String
public string Get(string url)
{
using (var client = new WebClient())
{
return Convert.ToBase64String(client.DownloadData(url));
}
}
我正在尝试发出 Twilio GET 请求以从以下 url 检索 wav 文件:https://api.twilio.com/2010-04-01/Accounts/accntsid/Recordings/pathsid.wav
我当前的代码是:
public string Get(string url)
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
using (Stream stream = response.GetResponseStream())
using (StreamReader reader = new StreamReader(stream))
{
return reader.ReadToEnd();
}
}
然而,这个 returns "RIFF??"
其中 "?"
代表一些奇怪的特殊字符。所以我显然没有正确阅读流。根据 API 文档,带有 ".wav"
扩展名的二进制 WAV 音频文件返回 mime 类型 "audio/x-wav"
。我需要设置一个字节数组吗?目的是将这个 .wav 转换成 base64 字符串。
干杯
是的,您不应该对二进制数据使用 StreamReader
,您需要将其作为 byte
数组处理,即:
public byte[] Get(string url)
{
var request = (HttpWebRequest)WebRequest.Create(url);
using (var response = (HttpWebResponse)request.GetResponse())
using (var stream = response.GetResponseStream())
using (var memoryStream = new MemoryStream())
{
stream.CopyTo(memoryStream);
return memoryStream.ToArray();
}
}
对于这种情况,HttpWebRequest
不是必需的,您可以只使用 WebClient.DownloadData
来避免所有 stream
处理,即
public byte[] Get(string url)
{
using (var client = new WebClient())
{
return client.DownloadData(url);
}
}
请阅读你的最后一句话 - 如果你想要 base64,你可以在 byte
数组
Convert.ToBase64String
public string Get(string url)
{
using (var client = new WebClient())
{
return Convert.ToBase64String(client.DownloadData(url));
}
}