2017-05-05 57 views
1

Facebook Docs如何使用Facebook4J获取Facebook Rate Limit Header?

如果您的应用做出足够的通话将被视为率我们的系统限制,我们返回的X应用程序,使用HTTP标头。 [...]当这些指标中的任何一个超过100时,该应用将受到速率限制。

我使用Facebook4J将我的应用程序连接到Facebook API。但是我找不到任何有关在Facebook调用后如何获得HTTP标头的文档,以避免受到限制。如果我需要增加或减少每个API调用之间的时间,我想使用此标头来了解dinamically。

所以,我的问题是:使用Facebook4J,可以检查Facebook是否返回了X-App-Usage HTTP头并获得它?怎么样?

+0

你得到的标题,如果你靠近限制 – WizKid

+0

我已经更新了问题“可以检查Facebook是否返回了X-App-Usage HTTP头并获取它?” – lgfischer

回答

1

有在facebook4j BatchRequests的响应getResponseHeader方法见Facebook4j code examples

你可以尝试getResponseHeader(“X-应用使用率”)

// Executing "me" and "me/friends?limit=50" endpoints 
BatchRequests<BatchRequest> batch = new BatchRequests<BatchRequest>(); 
batch.add(new BatchRequest(RequestMethod.GET, "me")); 
batch.add(new BatchRequest(RequestMethod.GET, "me/friends?limit=50")); 
List<BatchResponse> results = facebook.executeBatch(batch); 

BatchResponse result1 = results.get(0); 
BatchResponse result2 = results.get(1); 

// You can get http status code or headers 
int statusCode1 = result1.getStatusCode(); 
String contentType = result1.getResponseHeader("Content-Type"); 

// You can get body content via as****() method 
String jsonString = result1.asString(); 
JSONObject jsonObject = result1.asJSONObject(); 
ResponseList<JSONObject> responseList = result2.asResponseList(); 

// You can map json to java object using DataObjectFactory#create****() 
User user = DataObjectFactory.createUser(jsonString); 
Friend friend1 = DataObjectFactory.createFriend(responseList.get(0).toString()); 
Friend friend2 = DataObjectFactory.createFriend(responseList.get(1).toString());