2017-02-16 1 views
2

Die vorherige ConceptNet 5.4 API Version gibt JSON-Text im Klartext zurück (http://conceptnet5.media.mit.edu/data/5.4/c/en/library).ConceptNet 5.5 und JSON Format

Kennt jemand die neue ConceptNet 5.5 API? Warum gibt die Abfrage eine HTML-Quelle und keinen einfachen Text wie die vorherige Version (http://api.conceptnet.io/related/c/en/library) zurück? Ich habe keine Option gefunden, um das JSON-Format im Klartext auszuwählen.


Daher ist dieser Java-Code nicht mit der neuen Version verwendbar.

JsonReader jsonReader = Json.createReader(new URL("http://conceptnet5.media.mit.edu/data/5.4/c/en/library").openStream()); 

Antwort

1

Das Format der API-Antwort hängt von dem Accept:-Header, der Ihr Client sendet. (Ich fand dieses Verhalten sehr praktisch, wenn es das Django REST Framework tut, also habe ich es in den API-Code von ConceptNet implementiert.) Das Standardantwortformat ist JSON.

Wenn Sie z. B. curl http://api.conceptnet.io/related/c/en/library in der Befehlszeile ausführen, werden Sie JSON in einfacher, nicht eingerückter Form sehen. Wenn Sie in einem Webbrowser dorthin gehen, wird es eingerückt und in HTML eingebettet, so dass es hervorgehoben und verlinkt werden kann. Der Unterschied besteht darin, dass der Webbrowser die Kopfzeile Accept: text/html sendet.

Ich denke, es ist ein Fehler in der JsonReader Sie verwenden, dass es explizit senden Accept: text/html und dennoch erwartet es eine JSON-Antwort, nicht HTML. Sehen Sie, ob Sie es umgehen können, indem Sie die Header konfigurieren, die es sendet.

(Wenn die HTML immer unvermeidbar ist, beachten Sie, dass die Ebene JSON in HTML auch vorhanden ist, innerhalb des <script type="application/ld+json">-Tag.)

+1

Ja, Sie haben Recht. Ich löste es durch Erstellen von 'HttpURLConnection httpConnection = (HttpURLConnection) url.openConnection(); httpConnection.setRequestMethod ("GET"); httpConnection.setRequestProperty ("Akzeptieren", "application/json"); '. – David

+0

können Sie bitte den Java-Code teilen, durch den Sie die json-ld-Daten mit Java erhalten –