[英]Echo Nest API: convert curl command for checking rate limit to c#
I'm trying to convert this curl command to c# 我正在尝试将此curl命令转换为C#
curl -i 'http://developer.echonest.com/api/v4/artist/profile?api_key=[API KEY]&name=weezer'
This returns a response header with content like so: 这将返回一个响应标头,其内容如下:
HTTP/1.1 200 OK
Content-Length: 135
X-RateLimit-Limit: 120
X-RateLimit-Remaining: 62
X-RateLimit-Used: 58
I tried this code but when I run it, it gets an exception: "HTTP Error 405 Method not allowed". 我尝试了这段代码,但是当我运行它时,它得到了一个例外:“ HTTP错误405方法不允许”。
string baseurl = "http://developer.echonest.com/api/v4/artist/profile?api_key=[API KEY]&name=weezer";
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(baseurl);
request.Method = "POST";
request.Accept = "application/json";
request.UserAgent = "curl/7.37.0";
request.ContentType = "application/x-www-form-urlencoded";
using (var streamWriter = new StreamWriter(request.GetRequestStream()))
{
string data = "browser=Win7x64-C1|Chrome32|1024x768&url=http://www.google.com";
streamWriter.Write(data);
}
var response = request.GetResponse();
string text;
using (var sr = new StreamReader(response.GetResponseStream()))
{
text = sr.ReadToEnd();
Console.WriteLine(text);
}
Any help will be appreciated. 任何帮助将不胜感激。
As well as the changes Daniel suggested, I would remove the UserAgent. 除了丹尼尔建议的更改外,我还将删除UserAgent。 After that, it looks pretty much like the C# I'm using successfully. 之后,它看起来非常像我正在成功使用的C#。 Here's a somewhat shortened version of that: 这是一个稍微简化的版本:
string baseurl = "http://developer.echonest.com/api/v4/artist/profile?api_key=[API KEY]&name=weezer";
var req = (HttpWebRequest) WebRequest.Create(baseurl);
req.Method = WebRequestMethods.Http.Get;
req.Accept = "application/json";
using (var response = (HttpWebResponse) req.GetResponse())
{
if (response.StatusCode == HttpStatusCode.OK)
{
var stream = response.GetResponseStream();
if (stream != null)
{
using (var sr = new StreamReader(stream))
{
responseString = sr.ReadToEnd();
}
var remaining = GetRateInfo(response.Headers, "X-RateLimit-Remaining");
var used = GetRateInfo(response.Headers, "X-RateLimit-Used");
var limit = GetRateInfo(response.Headers, "X-RateLimit-Limit");
Trace.WriteLine($"Excedeed EchoNest Limits: remaining {remaining} - used {used} - limit {limit}");
}
}
else
{
// Error handling
}
// And the header parsing code: //头解析代码:
private static int GetRateInfo(WebHeaderCollection headers, string type)
{
var s = headers.Get(type);
if (s == null)
return -1;
int info;
return int.TryParse(s, out info) ? info : -1;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.