嗨,我有一个奇怪的问题,
我想从网站解析频道模板。
什么有效:
解析文件并从头开始切割(例如,仅德国通道),但是从行尾开始切割始终会导致索引超出范围-1异常
不知道为什么。

Disclamer:这只是虚拟文件,通道不起作用!
因此,除了免费电视或其他东西外。

public static void main(String[] args) throws Exception {
    {
        String url = "http://www.vjackson.info//live/index";
        final String USER_AGENT = "VAVOO/1.51";
        URL obj = new URL(url);
        HttpURLConnection con = (HttpURLConnection) obj.openConnection();

        //add reuqest header
        con.setRequestMethod("POST");
        con.setRequestProperty("User-Agent", USER_AGENT);
        con.setRequestProperty("Accept-Language", "en-US,en;q=0.5");

        final String trimFromLine = "no mather whats in here it dont work";
        final String searchKey = "#EXTINF:-1 tvg-name=\"13TH STREET FHD";
        String result = "";

        // Send post request

        BufferedReader in = new BufferedReader(
            new InputStreamReader(con.getInputStream()));
        String inputLine = "";
        StringBuffer response = new StringBuffer();

        while ((inputLine = in.readLine()) != null) {
            response.append(inputLine);
            if (response.toString().contains(searchKey)) {
                result=response.toString().substring(response.toString().indexOf(searchKey));

                String result2 = result.substring(0, result.indexOf(trimFromLine));

            }


        }
        in.close();
        System.out.println(result);

        //print result


    }

}
}

最佳答案

result.indexOf(trimFromLine)中找不到-1时,trimFromLine返回result。如果尝试运行String.substring(0, -1),将得到与您看到的相同的StringIndexOutOfBoundsException

在尝试调用此方法之前,应检查是否存在这种情况:

int indexOfTrim = result.indexOf(trimFromLine);
String result2;

if (indexOfTrim > -1) {
    result2 = result.substring(0, indexOfTrim);
}


我怀疑分配引起了问题。比较结果和result2,看看会得到什么。还要检查trimFromLine的结果。

08-16 17:58