2013-05-29 2 views
4

속도 제한을 확인하고 속도 제한이있는 경우 리셋 될 때까지 잠자기 모드 인 public void limit() 메서드를 만들려고합니다. 그러나 RateLimitStatus를 만드는 방법을 알아낼 수는 없습니다. 나는 시도했다 : RateLimitStatus status = twitter.getRateLimitStatus(); 그러나 실제로 RateLimitStatus를 반환하지 않는다 ... 확실히 솔직히 말해서, 나는 그게 무슨 뜻인지 잘 모르겠다. 어쨌든, 누군가가 RateLimitStatus를 얻는 방법을 알고 있다면, 현재 나의 프로젝트가 속도 제한으로 인해 충돌 할 수 있기 때문에 도움을 많이 주겠다. 나는 이것을 바꾸고 싶다. 미리 감사드립니다. 당신이 방법 public void limit(String endpoint)을 작성할 수 있습니다, 그래서Twitter4j에서 RateLimitStatus 객체를 얻으려면 어떻게해야합니까?

RateLimitStatus status = twitter.getRateLimitStatus().get("https://stackoverflow.com/users/search"); 

// Better: specify the family 
RateLimitStatus status2 = twitter.getRateLimitStatus("users").get("https://stackoverflow.com/users/search"); 

:

답변

7

새로운 트위터 API는 예를 들어, 그래서 twitter.getRateLimitStatus() 가족/엔드 포인트 및 속도 제한 상태 사이에 매핑이 반환, 속도 제한 상태resource “family”있다 적절한 속도 제한 상태를 확인합니다.

public void limit(String endpoint) { 
    String family = endpoint.split("/", 3)[1]; 
    RateLimitStatus status = twitter.getRateLimitStatus(family).get(endpoint); 
    // do what you want… 
} 

그러면 .limit("https://stackoverflow.com/users/search")으로 전화 할 것입니다.

+0

는/검색 속도를 수행/트윗 스트리밍 API를 적용? –

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()); 
} 
0
에 대한

트위터 API는 또한 수 있습니다 : Twitter4j가 제공하는 다른 기능으로 대체 될 수

  • mTwitter가 트위터 객체
  • getFavorites (이다) : 어디

    Log.d("TwitterActivity", "Limit:" + mTwitter.getFavorites().getRateLimitStatus().getLimit()); 
    

    트위터 개체

  • getLimit()하지만 여러 가지 옵션 중 하나 요 요 u는 당신과 같이 확인할 수 있습니다

를 선택할 수 있습니다

if(mTwitter.getFavorites().getRateLimitStatus().getLimit() <= 0){ 
    //do something 
} 
관련 문제