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"> тег.)

Другие вопросы по тегам