Похоже, что если вы используете необработанные (не кодированные) данные запроса, такие как
String url = "http://coryn.club/item.php?name=dark general's";
, вы получите правильные результаты.
Это говорит о том, что Jsoup кодирует эти параметры самостоятельно,Это означает, что если вы используете данные в форме dark+general%27s
, они будут закодированы снова, в результате чего окончательный URL-адрес будет содержать dark%2Bgeneral%2527s
.
. Из-за этого сервера после декодирования он увидит значение name
как dark+general%27s
НЕ как dark general's
и будет искать и не сможет найти результат, соответствующий ему.Из-за этого в возвращенном HTML не будет таблицы результатов.
Так что не кодируйте ваши данные, пусть Jsoup сделает это за вас .
Кстати: вы также можете изменить свой код на более читаемую (IMO) версию
Document document = Jsoup
.connect("http://coryn.club/item.php")
.data("name", stringBuilder.toString()) //query parameters - don't encode manually
.get();
Обратите внимание, что stringBuilder.toString()
не кодируется нами, он содержит необработанные данные, такие как dark general's
.
Кстати 2: если определено, что arguments
содержит CharacterSequence, например String, например List<String>
, поскольку Java 8 вместо
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append(arguments.get(0));
for (int i = 1; i < arguments.size(); i++)
stringBuilder.append(" ").append(arguments.get(i));
можно использовать
String joined = String.join(" ", arguments);
или
String joined = arguments.stream().collect(Collectors.joining(" "));
Дополнительная информация: Java-эквивалент взрыва PHP (',', array_filter (array ()))