0

プログラムで Web からコンテンツを取得するのは初めてなので、助けが得られることを期待していました。AsyncTask を使用して Web サーバーから結果を取得しようとしていますが、使用している方法は非常に遅いです。 質問:次の Web サーバーにクエリを実行するより高速な方法はありますか?

http://www.api.blocklist.de/api.php?ip= (さらに任意の IP アドレスをパラメーターとして)

API のデフォルトの出力は次のようにフォーマットされますが、指定されている場合は、php、xml、または json である可能性があります。

attacks: 0<br />reports: 0<br />

AsyncTask 内のコードは次のとおりです。

    @Override
    protected Void doInBackground(Void... params) {
        int i =-1;
        Iterator<String> itr = IPLIST.iterator();
        while(itr.hasNext()){
            String param =itr.next().split("\\|\\|\\|")[0]; 
            try {
                URL url = new URL("http://www.api.blocklist.de/api.php?ip="+param);
                 // read text returned by server
                BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));
                String token = in.readLine().split("[ <]")[1];
                i = Integer.parseInt(token);
                in.close();
                Log.i("TagJ","# Found rank! # "+ i);
            }catch (MalformedURLException e) {
                Log.e("TagJ", "Malformed URL: " + e.getMessage());
            }catch (IOException e) {
                Log.e("TagJ","I/O Error: " + e.getMessage());
            }
            CONNECTIONS.put(itr.next().toString(), Integer.valueOf(i));

        }
        return null;
    }

背景: IP アドレスのリストを作成し、そのリストを並べ替えて、IP がブラックリストに登録されているかどうかを確認する Android アプリを開発しています。各 IP について BL Web サーバーを照会するときに非常に遅いことを除いて、すべてが計画どおりに機能します。

4

0 に答える 0