我遇到“着名”错误:服务器返回HTTP响应代码:403为URL。 我必须发送大量的查询(+ -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”),它仍然无效。
答案 0 :(得分:2)
您问题中的网址表明您没有使用API密钥。
使用API密钥,您应该能够每天进行100k / 10k读/写(根据Freebase文档)
如果没有API密钥,您的配额将限制为更小的数量,当您重新访问时,您会收到403响应。这是为了防止滥用API基础结构,以便每个人都可以获得公平的API请求。
请按照Getting Started in the Freebase documentation上的说明获取API密钥。