ConceptNet 5.5 и формат JSON
Предыдущая версия API ConceptNet 5.4 возвращает простой текстовый формат JSON ( http://conceptnet5.media.mit.edu/data/5.4/c/en/library).
Кто-нибудь знаком с новым API ConceptNet 5.5? Почему запрос возвращает исходный HTML, а не простой текст, как в предыдущей версии ( http://api.conceptnet.io/related/c/en/library)? Я не нашел возможности выбрать простой текстовый формат JSON.
Поэтому этот Java-код не может использоваться с новой версией.
JsonReader jsonReader = Json.createReader(new URL("http://conceptnet5.media.mit.edu/data/5.4/c/en/library").openStream());
1 ответ
Формат ответа API зависит от Accept:
заголовок, который отправляет ваш клиент. (Мне показалось, что такое поведение действительно удобно, когда это делает Django REST Framework, поэтому я реализовал его в коде API ConceptNet.) Формат ответа по умолчанию - JSON.
Если вы бежите curl http://api.conceptnet.io/related/c/en/library
например, в командной строке вы увидите простой, без отступов JSON. Если вы заходите туда в веб-браузере, он имеет отступ и оборачивается в HTML, поэтому его можно выделить синтаксисом и связать. Разница в том, что веб-браузер отправляет заголовок Accept: text/html
,
Я думаю, что это ошибка в JsonReader, который вы используете, который он явно отправляет Accept: text/html
и все же он ожидает ответа JSON, а не HTML. Посмотрите, сможете ли вы обойти это, настроив отправляемые заголовки.
(Если получение HTML неизбежно, обратите внимание, что простой JSON также присутствует в HTML, в пределах <script type="application/ld+json">
тег.)