У меня странная проблема.В прошлом я использовал программу, которую написал сам, чтобы проверить, появилась ли новая глава в истории на fanfiction.net, и эта программа работает отлично даже сейчас (хотя ее графический интерфейс оставляет желать лучшего).
Однако, когда я пытаюсь создать новую версию, я не могу загрузить веб-страницу, хотя я использую точно такой же код (Copy Pasted).Это код ниже.При отправке URL-адреса типа https://www.fanfiction.net/s/11012678/36 методу nextExists он должен возвращать значение «true».Моя старая программа работает, но эта не такая, хотя это тот же код.
Единственное, о чем я могу думать, это может иметь какой-то эффект, это то, что я использую новую версию Eclipse, которая может вызватьэто ошибка кодировки, но я попытался проверить все распространенные типы кодирования, и ничто не обеспечивает открытый текст HTML.
Кто-нибудь знает, что может быть причиной этого?Это не катастрофа, если я не могу понять это правильно, но я хотел бы знать на будущее, если я снова столкнусь с той же проблемой.
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.URL;
public class Util {
private static final String BEFORE = "<button class=btn TYPE=BUTTON onClick=\"self.location='", AFTER = "'\">Next ></button>", SITE = "fanfiction.net";
public static String readSite(String path) throws Exception{
URL url = new URL(path);
BufferedReader in = null;
String line;
try{
StringBuilder builder = new StringBuilder();
in = new BufferedReader(new InputStreamReader(url.openStream()));
line = in.readLine();
if(line == null){
return null;
}
builder.append(line);
while((line = in.readLine()) != null){
builder.append('\n' + line);
}
return builder.toString();
} finally{
if(in != null){
in.close();
}
}
}
public static String updatePathToEnd(String path) throws Exception{
outer: while(nextExists(path)){
String data = readSite(path);
if(path.contains(SITE)){
String link = path.substring(0, path.indexOf(SITE) + SITE.length()) + data.substring(data.indexOf(BEFORE) + BEFORE.length(), data.indexOf(AFTER));
if(readSite(link) != null) {
path = link;
continue outer;
}
}
}
return path;
}
public static boolean nextExists(String path) throws Exception{
String text = readSite(path);
if(path.contains(SITE)){
return text==null ? false : text.contains(AFTER);
}
return false;
}
}