package model;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Arrays;
/**
* Created by promoscow on 08.04.17.
*/
public class SchoolStrategy implements Strategy {
private final String URL_FORMAT = "http://schools.mel.fm/school/gimnazii?schoolType=2%2C5&page=%d";
private static final String USER_AGENT = "Mozilla/5.0 (Windows; U; WindowsNT 5.1; en-US; rv1.8.1.6) Gecko/20070725 Firefox/2.0.0.6";
private static final String REFERRER = "none";
private final String filePath = "./src/" + String.valueOf(this
.getClass()
.getPackage()
.getName()
.replace(".", "/") + "/schools-test.html");
protected Document getDocument(int page) throws IOException {
String b = "http://schools.mel.fm/school/";
String a = "gimnazii?schoolType=2%2C5&page=";
String c = b + a + page;
return Jsoup.connect(c).userAgent(USER_AGENT).referrer(REFERRER).get();
}
public void getSchools(String searchString) {
try {
Document document = getDocument(0);
BufferedWriter writer = new BufferedWriter(new FileWriter("sc.html"));
System.out.println(document.html());
writer.write(document.html());
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
Проблема в том, что в строке содержится знак процента, из чего появляются лишние символы: 25. Как их убрать, ума не приложу. Перепробовал много чего, не помогает. Помогите!
Jsoup должен распарсить строку
http://schools.mel.fm/school/gimnazii?schoolType=2%2C5&page=0
вместо этого в него попадает строка
http://schools.mel.fm/school/gimnazii?schoolType=2%252C5&page=0
Дело в том, что символ %
используется для кодированния других (запрещенных) символов в URL. В вашем случае последовательность 2%2C5
- это закодированная (экранированная) строка 2,5
. То есть получается, что вы передает уже закодированную строку и её кодируют еще раз.
Решение простое - предавайте не закодированную строку
protected Document getDocument(int page) throws IOException {
String b = "http://schools.mel.fm/school/";
String a = "gimnazii?schoolType=2,5&page=";
String c = b + a + page;
return Jsoup.connect(c).userAgent(USER_AGENT).referrer(REFERRER).get();
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Как сделать чтобы программа заработала и вывела информацию о том в кокой ориентации у тебя находится экран смартфона , если уже создал функцию...
Здравствуйте, только начал изучать javaУ меня три класса взятые из учебника:
Есть небольшое GUI приложение, состоящее из нескольких окошек, в котором используются картинки (работаю в Intellij Idea)Они лежат в отдельной папке...