如果您的应用通过我们的系统进行足够的呼叫以考虑速率限制,我们将返回X-App-Usage HTTP标头。 [...]当这些指标超过100时,应用程序将受到费率限制。
我正在使用Facebook4J将我的应用程序连接到Facebook API。但我找不到任何关于如何在Facebook通话后获得std::sort(std::begin(pairs), std::end(pairs), compare_pairs_second<std::less>());
HTTP标头的文档,以避免受到速率限制。如果我需要增加或减少每次API调用之间的时间,我想使用这个标题来知道。
所以,我的问题是:使用Facebook4J,可以检查Facebook是否返回X-App-Usage
HTTP标头并获取它?怎么样?
答案 0 :(得分:1)
facebook4j中的BatchRequests响应有一个getResponseHeader方法,请参阅Facebook4j code examples
您可以尝试使用getResponseHeader(“X-App-Usage”)
// 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());