使用谷歌(java)请求时出现URL错误403



我遇到了"著名"错误:服务器返回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 密钥。

相关内容

  • 没有找到相关文章

最新更新