我正在尝试制作一个方法public void limit()
来检查速率限制,并且如果速率受限,则会一直等到重置之前一直睡觉。但是,我无法弄清楚如何制作RateLimitStatus。我试过了:
RateLimitStatus status = twitter.getRateLimitStatus();
但它实际上并没有返回RateLimitStatus ......坦率地说,我不确定这是什么意思。无论如何,如果有人知道如何获得RateLimitStatus,他们的帮助将非常感激,因为目前我的项目由于速率限制而能够崩溃,我想改变它。
提前谢谢!
答案 0 :(得分:7)
新的Twitter API的速率限制状态为 / resource “family”,因此twitter.getRateLimitStatus()
会返回系列/端点与速率限制状态之间的映射,例如:
RateLimitStatus status = twitter.getRateLimitStatus().get("/users/search");
// Better: specify the family
RateLimitStatus status2 = twitter.getRateLimitStatus("users").get("/users/search");
所以,你可以写一个方法public void limit(String endpoint)
,它会检查正确的速率限制状态。
public void limit(String endpoint) {
String family = endpoint.split("/", 3)[1];
RateLimitStatus status = twitter.getRateLimitStatus(family).get(endpoint);
// do what you want…
}
然后,您将使用.limit("/users/search")
调用它。
答案 1 :(得分:5)
Map<String ,RateLimitStatus> rateLimitStatus = twitter.getRateLimitStatus();
for (String endpoint : rateLimitStatus.keySet()) {
RateLimitStatus status = rateLimitStatus.get(endpoint);
System.out.println("Endpoint: " + endpoint);
System.out.println(" Limit: " + status.getLimit());
System.out.println(" Remaining: " + status.getRemaining());
System.out.println(" ResetTimeInSeconds: " + status.getResetTimeInSeconds());
System.out.println(" SecondsUntilReset: " + status.getSecondsUntilReset());
}
答案 2 :(得分:0)
Twitter API也允许:
Log.d("TwitterActivity", "Limit:" + mTwitter.getFavorites().getRateLimitStatus().getLimit());
其中:
您可以这样检查:
if(mTwitter.getFavorites().getRateLimitStatus().getLimit() <= 0){
//do something
}