プログラムで 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 サーバーを照会するときに非常に遅いことを除いて、すべてが計画どおりに機能します。