0

「有名な」エラーが発生しています: サーバーが 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」など) にもかかわらず、まだ機能していません。

4

1 に答える 1

2

質問の URL は、API キーを使用していないことを示しています。

  • API キーを使用すると、1 日あたり 100k/10k の読み取り/書き込みを実行できるはずです (Freebase のドキュメントによると)。

  • API キーがない場合、クォータははるかに小さい数に制限され、超過すると 403 応答が返されます。これは、API インフラストラクチャの悪用を防ぎ、誰もが API リクエストを公平に共有できるようにするためです。

API キーを取得するには、Freebase ドキュメントの「はじめに」の手順に従ってください。

于 2012-10-14T13:30:46.687 に答える