使用C#.NET使用Soundcloud API连接和上载曲目

Arm*_*tov 7 .net c# api audio soundcloud

我正在尝试使用C#.NET将音轨上传到Soundcloud.com,但是在任何地方都没有任何.NET资源.有人可以使用.NET发布链接或如何将音频文件上传到我的Soundcloud.com帐户的示例吗?

谢谢,阿曼

小智 7

要使用soundcloud的REST API上传音频,您需要处理与HTTP POST相关的问题(RFC 1867).一般情况下,ASP.NET不支持使用POST发送多个文件/值,因此我建议您使用Krystalware库:http://aspnetupload.com/Upload-File-POST-HttpWebRequest-WebClient-RFC-1867.aspx

之后,您需要将适当的表单字段发送到https://api.soundcloud.com/tracks网址:

  • 身份验证令牌(oauth_token)
  • 曲目标题(曲目[标题])
  • 文件(track [asset_data])

示例代码:

using Krystalware.UploadHelper;
...

System.Net.ServicePointManager.Expect100Continue = false;
var request = WebRequest.Create("https://api.soundcloud.com/tracks") as HttpWebRequest;
//some default headers
request.Accept = "*/*";
request.Headers.Add("Accept-Charset", "ISO-8859-1,utf-8;q=0.7,*;q=0.3");
request.Headers.Add("Accept-Encoding", "gzip,deflate,sdch");
request.Headers.Add("Accept-Language", "en-US,en;q=0.8,ru;q=0.6");

//file array
var files = new UploadFile[] { 
    new UploadFile(Server.MapPath("Downloads//0.mp3"), "track[asset_data]", "application/octet-stream") 
};
//other form data
var form = new NameValueCollection();
form.Add("track[title]", "Some title");
form.Add("track[sharing]", "private");
form.Add("oauth_token", this.Token);
form.Add("format", "json");

form.Add("Filename", "0.mp3");
form.Add("Upload", "Submit Query");
try
{
    using (var response = HttpUploadHelper.Upload(request, files, form))
    {
        using (var reader = new StreamReader(response.GetResponseStream()))
        {
            lblInfo.Text = reader.ReadToEnd();
        }
    }
}
catch (Exception ex)
{
    lblInfo.Text = ex.ToString();
}
Run Code Online (Sandbox Code Playgroud)

示例代码允许您从服务器上传音频文件(注意Server.MapPath方法以形成文件的路径)并以json格式获取响应(reader.ReadToEnd)