package com.nulchan;

import java.io.IOException;

import org.jsoup.Connection.Response;

import org.jsoup.Jsoup;

import com.nulchan.exceptions.BoardException;
import com.nulchan.exceptions.ParseException;
import com.nulchan.objects.PostContainer;



abstract class Fetcher<T extends PostContainer> implements IFetcher<T> {
	String uri; //страничка.
	
	/**
	 * Ну ты понял. Создаем загрузчик, устанавливаем страницу загрузки.
	 * @param path
	 */
	public Fetcher(final String path){
			uri = path;
	}
	/**
	 * Получаем html документ из Jsoup (работаем в Jsoup формате).
	 * @return Jsoup Document
	 * @throws IOException если что-то не так.
	 * @throws BoardException 
	 */
	private org.jsoup.nodes.Document fetchURL() throws BoardException {
		try {
                    Response response = Jsoup
                            .connect(uri)
                            .userAgent(Board.Settings.userAgent)
                            .maxBodySize(3145728)
                            .execute();
                    return Jsoup.parse(response.body(), uri);
		/*return Jsoup
				.connect(uri)
				.userAgent(Board.Settings.userAgent)
                                .timeout(10000)
				.get();*/
		} catch (Exception e) {
			e.printStackTrace();
			throw new BoardException("Видимо, доска неверная.");
		}
	}
	/**
	 * Парсит заданный документ в массив.
	 * @param Что парсим
	 * @return массив сообщений
	 * @throws BoardException 
	 */
	protected abstract T[] parseHtmlDocument(final org.jsoup.nodes.Document html) throws ParseException;
	
	@Override
	public T[] fetch() throws BoardException, ParseException{			
		return parseHtmlDocument(fetchURL());
	}
}
@@ -435,16 +435,43 @@
 ram path
+ %D0%9F%D1%83%D1%82%D1%8C %D0%BF%D0%BE%D0%BB%D0%BD%D1%8B%D0%B9 %D0%B4%D0%BE %D1%86%D0%B5%D0%BB%D0%B8, %D0%B1%D0%BB%D0%B8%D0%BD.
 %0A%09 */%0A%09p
@@ -1677,8 +1677,9 @@
 ));%0A%09%7D%0A%7D
+%0A

Update Fetcher.java