Я инженер-программист, работающий в Mendeley с использованием Java, так что, надеюсь, я в состоянии ответить на этот вопрос.
Кроме того, в вашем первоначальном вопросе говорилось, что вы получаете 501 код ответа, однако после просмотра журналов Mendeley за последние 7 дней и отсутствия каких-либо кодов 501 ответа, а также после опробования введенного вами кода. Я предположил, что вы имели в виду, что вы получили 500 кодов ответов:)
Оказывается, здесь есть две ошибки. Первая ошибка в OpenJDK (см. https://bugs.openjdk.java.net/browse/JDK-8163921 и https://bugs.openjdk.java.net/browse/JDK-8177439) - по какой-то причине, если вы используете HttpUrlConnection, но не устанавливаете заголовок Accept, тогда заголовок Accept по умолчанию вставляется при отправке запроса.
К сожалению, указанный заголовок по умолчанию недействителен! Таким образом, вы должны были вернуть ошибку 400 (Bad Request).
Чтобы обойти это, добавьте следующую строку кода, которая добавляет действительный заголовок Accept к вашему запросу, предотвращая тем самым вставку искаженного заголовка по умолчанию:
con.setRequestProperty("Accept", "*/*");
Теперь все должно работать так, как будто вы сделали запрос керли (или, по крайней мере, это заставило его работать у меня)!
Обратите внимание, что я упомянул, что должна быть возвращена ошибка 400 (вместе с полезным сообщением, которое помогло бы вам отладить то, что происходило неправильно). К сожалению, с нашей стороны была ошибка, которая означала, что при разборе искаженного заголовка Accept по умолчанию было создано исключение, которое не было обработано правильно. Поскольку мы не обработали исключение, используемая нами среда вернула 500 по умолчанию. Я собрал билет для этого, так что, надеюсь, это будет исправлено в будущем.
Наконец, способ отправки запросов (т. Е. С классом HttpUrlConnection), хотя он и работает, довольно низкоуровневый - это делает все немного сложнее для вас, чем должно быть. Я бы предложил использовать библиотеку, которая позволяет отправлять запросы, не беспокоясь о некоторых подробностях, например, Jetty HttpClient или Apache HttpComponents Library
Надеюсь, это поможет!