使用google请求时网址错误403(java)

时间:2012-10-14 13:12:46

标签: java google-api httpurlconnection

我遇到“着名”错误:服务器返回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”),它仍然无效。

1 个答案:

答案 0 :(得分:2)

您问题中的网址表明您没有使用API​​密钥。

  • 使用API​​密钥,您应该能够每天进行100k / 10k读/写(根据Freebase文档)

  • 如果没有API密钥,您的配额将限制为更小的数量,当您重新访问时,您会收到403响应。这是为了防止滥用API基础结构,以便每个人都可以获得公平的API请求。

请按照Getting Started in the Freebase documentation上的说明获取API密钥。