我遇到了"著名"错误:服务器返回HTTP响应代码:URL的403。我必须发送大量查询(+-2000)来填充我的数据库。但是,50-100首先工作,然后所有以下触发错误403。我不知道为什么...
这是我的代码:
public static ArrayList<String> querying(String name){
URL url = null;
String inputLine;
ArrayList<String> resultArray = new ArrayList<String>();
BufferedReader in;
try {
url = new URL(s);
} catch (MalformedURLException e) {
e.printStackTrace();
}
try {
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.addRequestProperty("User-Agent", "Mozilla/4.0");
in = new BufferedReader(new InputStreamReader(con.getInputStream()));
while ((inputLine = in.readLine()) != null) {
...
}
in.close();
con.disconnect();
} catch (IOException e) {
e.printStackTrace();
}
return resultArray;
}
其中s
是:
"https://www.googleapis.com/freebase/v1/mqlread?query={"id":"/en/"+name+"", "name": null, "type":"/base/popstra/celebrity","/base/popstra/celebrity/friendship": [{"participant": [] }] }".replace(" ", "")
试图在网络上找到有关此错误的一些信息,但尽管我发现了(例如"addRequestProperty"),它仍然无法正常工作。
您问题中的网址表明您没有使用 API 密钥。
-
使用 API 密钥,您应该每天能够执行 100k/10k 次读取/写入(根据 Freebase 文档)
-
如果没有 API 密钥,您的配额将限制为小得多的数字,当您超出时,您将收到 403 响应。这是为了防止滥用 API 基础设施,以便每个人都可以获得公平的 API 请求份额。
请按照 Freebase 文档中有关入门的说明获取 API 密钥。