1

Google 言語検出 API を使用しようとしています。現在、次のように Google ドキュメントで入手可能なサンプルを使用しています。

    public static String googleLangDetection(String str) throws IOException, JSONException{        
        String urlStr = "http://ajax.googleapis.com/ajax/services/language/detect?v=1.0&q=";
//        String urlStr = "http://ajax.googleapis.com/ajax/services/search/web?v=1.0&q=Paris%20Hilton";
        URL url = new URL(urlStr+str);
        URLConnection connection = url.openConnection();
//        connection.addRequestProperty("Referer","http://www.hpeprint.com");

        String line;
        StringBuilder builder = new StringBuilder();
        BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
        while((line = reader.readLine()) != null) {
         builder.append(line);
        }

        JSONObject json = new JSONObject(builder.toString());

        for (Iterator iterator = json.keys(); iterator.hasNext();) {
            String type = (String) iterator.next();
            System.out.println(type);
        }

        return json.getString("language");
    }

しかし、http エラー コード '406' が表示されます。

何が問題なのか理解できませんか?以下のGoogle検索クエリ(コメント済み)のように、正常に機能しています。

結果の言語検出 URL 自体は、Firefox または IE で実行すると正常に機能しますが、Java コードでは失敗します。

私が間違っていることはありますか?

前もって感謝します

アシッシュ

4

2 に答える 2

1

推測として、渡されたものにstrは URL で無効な文字が含まれており、エラー コード406Not Acceptableであり、コンテンツ エンコーディングの問題がある場合に返されるようです。

簡単なグーグルの後、java.net.URLEncoderstrクラスを介して 実行し、それを URL に追加する必要があるようです。

于 2010-09-27T15:24:43.863 に答える
0

次のリンクで答えを見つけました:

JavaでのHTTPURLアドレスエンコーディング

次のようにコードを変更する必要がありました。

URI uri = new URI("http","ajax.googleapis.com","/ajax/services/language/detect","v=1.0&q="+str,null);       
URL url = uri.toURL();  
于 2010-09-28T07:43:30.807 に答える