我正在开发使用Twitter API的应用程序,并且需要编写一个方法来检查用户是否存在。 这里是我的代码:
public static bool checkUserExists(string user)
{
//string URL = "https://twitter.com/" + user.Trim();
//string URL = "http://api.twitter.com/1/users/show.xml?screen_name=" + user.Trim();
//string URL = "http://google.com/#hl=en&sclient=psy-ab&q=" + user.Trim();
string URL = "http://api.twitter.com/1/users/show.json?screen_name=" + user.Trim();
HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(URL);
try
{
var webResponse = (HttpWebResponse)webRequest.GetResponse();
return true;
}
//this part onwards does not matter
catch (WebException ex)
{
if (ex.Status == WebExceptionStatus.ProtocolError && ex.Response != null)
{
var resp = (HttpWebResponse)ex.Response;
if (resp.StatusCode == HttpStatusCode.NotFound)
{
return false;
}
else
{
throw new Exception("Unknown level 1 Exception", ex);
}
}
else
{
throw new Exception("Unknown level 2 Exception", ex);
}
}
}
问题是,调用方法不起作用(它没有得到响应)超过2或3次,使用任何已评论的网址,其中包括谷歌搜索查询的(我想这可能是由于Twitter的API限制)。 在调试,它表明,它停留在:
var webResponse = (HttpWebResponse)webRequest.GetResponse();
下面是我如何调用它:
Console.WriteLine(TwitterFollowers.checkUserExists("handle1"));
Console.WriteLine(TwitterFollowers.checkUserExists("handle2"));
Console.WriteLine(TwitterFollowers.checkUserExists("handle3"));
Console.WriteLine(TwitterFollowers.checkUserExists("handle4"));
Console.WriteLine(TwitterFollowers.checkUserExists("handle5"));
Console.WriteLine(TwitterFollowers.checkUserExists("handle6"));
在大多数我得到2-3行输出。 可能有人请指出有什么不对?
更新1:
我发送每15秒(内限制孔)1个请求,它仍然会导致错误。 在另一方面,在发送请求,关闭所述应用程序并再次运行它工作得很好(平均账户每5秒1个请求)。 限速为每小时150个呼叫Twitter的常见问题 。
另外,我也等待一段时间,并得到了这个例外在2级: http://pastie.org/3897499
更新2:初听令人惊讶,但如果我跑提琴手,它完美的作品。 不管我是否针对此过程,也不会!