我尝试通过他们的API从soundcloud中检索mp3数据,我已经有了download_url属性,我想将它直接保存到KnownFolders.MusicLibrary。 问题是当我尝试使用浏览器下载链接时请求保存/播放。 是否有可能绕过这个并获得直接下载链接,而不必提示选择保存或播放。
答案 0 :(得分:3)
我自己没试过,但是" download_url"正如您所说的原始文件的URL。尝试使用此代码并查看您获得的内容,然后您可以修改请求,直到获得数据流。您也可以尝试像Burp或Fiddler这样的代理来检查传递给Soundcloud的内容,然后创建类似的请求。
public static string GetSoundCloudData()
{
var request = (HttpWebRequest)WebRequest.Create("http://api.soundcloud.com/tracks/3/download");
request.Method = "GET";
request.UserAgent =
"Mozilla/5.0 (Windows NT 6.3; WOW64; rv:38.0) Gecko/20100101 Firefox/38.0";
// Get the response.
WebResponse response = request.GetResponse();
// Display the status.
if (((HttpWebResponse)response).StatusCode == HttpStatusCode.OK)
{
// Get the stream containing content returned by the server.
var dataStream = response.GetResponseStream();
// Open the stream using a StreamReader for easy access.
StreamReader reader = new StreamReader(dataStream, Encoding.UTF8);
// Read the content.
string responseFromServer = reader.ReadToEnd();
// Display the content.
Debug.WriteLine(responseFromServer);
// Clean up the streams.
reader.Close();
dataStream.Close();
response.Close();
return responseFromServer;
}
else
{
response.Close();
return null;
}
}
答案 1 :(得分:1)
尝试使用HttpClient或WebClient。 据我所知,WebClient有一个OpenReadAsync方法。
使用此方法并将mp3网址作为参数传递。
您将获得的是您的mp3流,然后您可以使用StreamWriter将其作为文件保存到本地文件夹中。