0

我对以编程方式从网络获取内容还很陌生,所以我希望能得到一些帮助。我正在尝试使用 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;
    }

背景:我正在开发一个 Android 应用程序,它构建一个 IP 地址列表,然后对该列表进行排序以查看是否有任何 IP 被列入黑名单。一切都按计划进行,只是在为每个 IP 查询 BL Web 服务器时速度很慢。

4

0 回答 0