超过Freebase API用户速率限制

时间:2014-12-19 19:58:40

标签: freebase

我收到了以下错误,我不知道如何解决它。我读了page,但我的问题与编写者问题(URL中的空格)不同。

com.google.api.client.http.HttpResponseException: 403 Forbidden
{
"error": {
 "errors": [
{
"domain": "usageLimits",
"reason": "userRateLimitExceededUnreg",
"message": "User Rate Limit Exceeded. Please sign up",
"extendedHelp": "https://code.google.com/apis/console"
}
],
  "code": 403,
  "message": "User Rate Limit Exceeded. Please sign up"
  }
  }

我检查了页面1;他们提到“Freebase允许开发人员每人每天免费配置高达100,000(十万)个读取呼叫”,我只拨打49886个读取呼叫。然后我收到此错误,我不知道如何解决问题。< / p>

1 个答案:

答案 0 :(得分:0)

我创建了一个使用Freebase API的服务器密钥。另外,我以下面的方式定义了我的查询:

String query="https://www.googleapis.com/freebase/v1/topic"+mId+"?key=xxx";            
GenericUrl url = new GenericUrl(query);
HttpRequest request = requestFactory.buildGetRequest(url)
HttpResponse httpResponse = request.execute();
JSONObject response = (JSONObject)parser.parse(httpResponse.parseAsString());

mId位于Freebase语料库中。另外,我添加基于this page的流动捕获以防止错误,因为在每一秒我们只能向Freebase服务器发送10个请求。

catch (HttpResponseException e) {
             if (e.getStatusCode()== 403
                    && (e.getContent().contains("userRateLimitExceededUnreg")
                        || e.getContent().contains("uotaExceeded"))) {
                 System.out.println("sleep");
                 Thread.sleep((2^ n) *1000 + randomGenerator.nextInt(1001));

              }