XML API

Hier geht es um die Programmierung von Opencaching.de - User mit Erfahrungen im Bereich PHP, MySQL, HTML, JavaScript, CSS werden hier ständig gesucht
Antworten
arminus

Hallo,

ich wollte mir eben mal die XML API ansehen. Hab dazu folgende URL aus der Doku kopiert:
http://www.opencaching.de/xml/ocxml12.php?modifiedsince=20060101000000&cache=1&cachedesc=1&cachelog=1&picture=1&removedobject=0&lat=48&lon=9&distance=10&picturefromcachelog=1

(und lediglich den modifiedsince param angepasst)

und dann in den Firefox RESTClient gefüttert. Ergebnis:

Seite: sql_error
Fehlermeldung: Ein Datenbankbefehl konnte nicht ausgeführt werden.

in einer HTML (?!) Seite ...

Was mach ich falsch ?

Danke,
Armin

Mod: Ergebnismenge des Beispiels verringert ... wer weiß wie viele Leute hier draufklicken
Zuletzt geändert von arminus am 18.04.2013, 01:37, insgesamt 1-mal geändert.
Benutzeravatar
flopp
Vereinsmitglied
Vereinsmitglied
Beiträge: 1008
Registriert: 18.03.2012, 17:02

Ja, ich kriege hier auch den gleichen Fehler bei meiner Anwendung. Mal schauen, was da los ist.
[url=http://www.flopp-caching.de/]Flopps Tolle Karte[/url] | [url=http://www.florian-pigorsch.de/oc]OC[/url] | [url=http://www.florian-pigorsch.de/gc]GC[/url] | [url=http://florian-pigorsch.de/+]G+[/url] | [url=http://florian-pigorsch.de/t]Tw[/url] | [url=http://florian-pigorsch.de/fb]Fb[/url]
following

Ist repariert.
arminus

Danke.

2 Fragen hätte ich noch:
  • Gibt's irgendwo eine Beschreibung der möglichen Werte für type und status ?
  • Für meine Karte zeige ich an ob ein Cache von dem bei mir eingeloggten Besucher gefunden ist oder nicht. Eure API scheint nicht vorzusehen eine userid bei der Abfrage mitzugeben. D.h. ich muss für jeden Cache alle logs mit abholen und prüfen ob ein Found log des aktuellen Users dabei ist um den Found Status eines Caches zu bestimmen ?
following

arminus hat geschrieben: Gibt's irgendwo eine Beschreibung der möglichen Werte für type und status ?
Im OC-Quelltext. :)

Genauer: hier unter "cache_type" und "cache_status".
D.h. ich muss für jeden Cache alle logs mit abholen und prüfen ob ein Found log des aktuellen Users dabei ist um den Found Status eines Caches zu bestimmen ?
Ja... den Fundstatus abzufragen ist im XML-Interface bislang nicht vorgesehen; ließe sich aber einbauen.

Mit der OKAPI geht es. Wäre die für deine Zwecke ausreichend, trotz des Limits von 500 Caches pro Suchabfrage?
arminus

Ja... den Fundstatus abzufragen ist im XML-Interface bislang nicht vorgesehen; ließe sich aber einbauen.
Ich denke das wäre besser, sonst muss viel Traffic über die Leitung nur um diesen Status zu bestimmen.
Mit der OKAPI geht es. Wäre die für deine Zwecke ausreichend, trotz des Limits von 500 Caches pro Suchabfrage?
Schwer zu sagen. Die analoge Funktion für GC ist per Live API für den aktuellen Karten-Ausschnitte alle Caches herunter zu laden. (die params dafür sind center lon/lat, radius und der username). Das können natürlich mehr als 500 sein. Mit OKAPI müsste ich das dann in mehrere calls splitten, oder ? Und die steht noch nicht zur Verfügung, oder ?
following

Im Moment hängt leider alles daran, dass unser Server endlich wieder stabil läuft: Der Start der OKAPI oder auch andere Verbesserungen, z.B. am XML-Interface. Wir sind vollauf damit beschäftigt, die Kiste am Laufen zu halten und die Fehlerursache einzukreisen.

> Mit OKAPI müsste ich das dann in mehrere calls splitten, oder ?

Ja. Du könntest z.B. die [url=http://opencaching.pl/okapi/services/caches/search/bbox.html]bbox-Suche[/url] verwenden, um die Karte quadratweise abzuscannen. Wenn mehr als 500 Einträge vorhanden sind bekommst du das zurückgemeldet und könntest dann die Quadrate verkleinern.
arminus

Wenn mehr als 500 Einträge vorhanden sind bekommst du das zurückgemeldet und könntest dann die Quadrate verkleinern
Mmmm, das liest sich irgendwie wie trial&error  ;) Ich glaube mir wäre der XML Weg lieber. Wie käme ich momentan am einfachsten zu einem Test-Server ? Bin jetzt nicht der PHP Spezialist, aber letztendlich würde es ja "nur" auf einen weiteren param für ocxml12.php, eine zusätzlichen SQL Abfrage pro Cache (hat der user dort einen found ?) und eine Erweiterung der XML DTD handeln. Und Wochenende soll's regnen ;-) Wie restriktiv seid Ihr an der Stelle ? (Abwärtskompatibilität und so ..) Oder wird sowas dann gleich ocxml13.php mit allem was dran hängt ?
Benutzeravatar
mic@
Vereinsmitglied
Vereinsmitglied
Beiträge: 6631
Registriert: 04.12.2009, 00:31

[quote="arminus"]Wie käme ich momentan am einfachsten zu einem Test-Server ?[/quote]

Hier findest Du alles Nötige: http://wiki.opencaching.de/index.php/Entwicklung
Den Rest kann Dir Peter (following) erzählen, sobald er seinen Freudentanz über einen neuen Entwickler beendet hat  ;)
following

Eine Abfrage pro Cache wäre zu langsam. Das müsste in diese Abfrage eingebaut werden, die alle Daten für alle Caches abfragt (per LEFT JOIN auf die Logtabelle). Als Vorlage kann der Kartencode im map2.php dienen, der macht das Gleiche für die Fundanzeige auf der Karte. Die Performance ist dann nochmal mit einem großen XML-Job zu prüfen - wenn er dreimal so lange braucht wie vorher, ist was schief gelaufen. ;)

Ich wäre dafür es sauber zu implementieren, also XML-Version 1.3. In die Version 1.3 sollten eigentlich auch die zusätzlichen Wegpunkte rein ... aber notfalls wird das dann halt 1.4.

[quote="arminus"]
Wie käme ich momentan am einfachsten zu einem Test-Server ?
[/quote]

-> http://wiki.opencaching.de/index.php/Entwicklung/Entwicklersystem

Wegen Aufnahme ins Team kannst du Micha anschreiben (4_Vs).
arminus

Eine Abfrage pro Cache wäre zu langsam.
Klar, das war ja nicht mal pseudo-code  ;) Danke jedenfalls mal für die Pointer, ich schau mal ohne jetzt was zu versprechen ... Die aktuelle Anbindung über GPX tut ja zunächst mal.
arminus

Also von 4_Vs hab ich noch nichts gehört - aber ihr seid wohl gerade ziemlich beschäftigt. Hab mal einen Blick auf [url=http://forum.opencaching-network.org/http://localhost//viewtopic.php?t=8]Wir basteln uns ein Entwicklersystem[/url] geworfen, was mir dort vor allem fehlt: Wie komm ich an einen DB dump ?

Code: Alles auswählen

cd doc/sql/tables
for SQL in `ls *.sql`; do mysql -u <...> -p <...> opencaching < $SQL done
cd ../data
mysql -u <...> -p <...> opencaching < data.sql
cd ../stored-proc
php maintain.php
damit hab ich die Struktur - und dann ?
Um die Datenbank exakt auf den richtigen Stand zu bringen, geht man am besten wie folgt vor:

1. http://local.opencaching.de/oc-server/server-3.0/htdocs/translate.php
2. SQL Export
die URL tut aber nicht ...
following

arminus hat geschrieben: Hab mal einen Blick auf [url=http://forum.opencaching-network.org/http://localhost//viewtopic.php?t=8]Wir basteln uns ein Entwicklersystem[/url] geworfen,
Das ist veraltet, wir haben eine viel bessere Anleitung im internen Wiki. Hab Micha nochmal angeschrieben wegen Teamzugang ..
damit hab ich die Struktur - und dann ?
doc/sql/static-data/data.sql einlesen
arminus

doc/sql/static-data/data.sql einlesen
Jo danke, die hab ich schon drin. Das sind aber nur meta (?) Daten, Translations etc. so wie ich das sehe. Die Frage war wie ich an tatsächliche Cache Daten (die realen oder zumindest dummies) komme - aber ich warte dann mal auf das neue Wiki.
following

Einen Dump mit realen Cachedaten können wir aus rechtlichen Gründen nicht veröffentlichen, weil Caches enthalten kann, die inzwischen gesperrt/versteckt sind. Eine Sammlung mit Dummydaten wäre hilfreich, aber bislang gibt es keine (wer mag eine erstellen?)

Das alte [url=http://wiki.opencaching.de/index.php/Entwicklung/Entwicklersystem]Entwicklersystem[/url] enthält einen Dump mit echten, älteren Cachedaten, allerdings müssen dort alle Datenbankänderungen manuell nachgepflegt werden. Ich kann teamintern auch einen neueren Dump bereitstellen, wo nur die Hälfte nachzupflegen ist. Irgendwann werde ich auch mal wieder einen aktuellen basteln.

Hier zeigt sich das Hauptproblem der Opencaching.de-Entwicklung: Die Einstiegshürde für neue Entwickler ist viel zu groß. Wenn [url=http://forum.opencaching-network.org/http://localhost//viewtopic.php?t=0]diese Liste[/url] erst mal abgearbeitet ist, wird es wesentlich einfacher sein - nur fehlt es an Leuten, die beim Abarbeiten dieser Liste mithelfen, daher kann das noch lange dauern.
Zuletzt geändert von following am 20.04.2013, 23:26, insgesamt 1-mal geändert.
Antworten