Autor Thema: OKAPI HOWTO :)  (Gelesen 7609 mal)

Offline 4_Vs

  • Vereinsmitglied
  • Vereinsmitglied
  • Large
  • *
  • Beiträge: 3159
  • Freier Cacher
    • vaahsen.de
OKAPI HOWTO :)
« am: 26. August 2013, 16:53:52 »
Hiho,

ich hab da mal ne Frage ... ::)

Ich möchte auf meinem Blog OKAPI nutzen, also besser gesagt das Ergebnis davon ... hab mich jetzt ein wenig damit beschäftigt und mir auch einen ConsumerKey besorgt.

Muss ich in den Header der Seite irgendetwas eintragen, damit der Abruf funktioniert? Wie ich das Ergebnis in der Seite darstelle ist mir glaube ich klar, ich verstehe nur das Thema json nicht, also ob ich dafür irgendetwas anderes machen muss außer z. B.
$okapi_base_url = "http://opencaching.de/okapi/";
$json = file_get_contents($okapi_base_url."services/apisrv/stats");
$data = json_decode($json);
print "Number of Openaching.de users: ".$data->user_count;
in meine Seite einzubauen?

Danke
Noob ;D
Whenever I try to plan something, it doesn't seems to work out. So why plan, it only leads to disappointment! (Eddie van Halen)

Offline 4_Vs

  • Vereinsmitglied
  • Vereinsmitglied
  • Large
  • *
  • Beiträge: 3159
  • Freier Cacher
    • vaahsen.de
Re: OKAPI HOWTO :)
« Antwort #1 am: 26. August 2013, 17:09:52 »
Hmmm,

okay, ich brauche im Header der Seite nichts und das Beispiel funktioniert auch ohne Probleme, aber anscheinend habe ich einen Denkfehler, denn dieser Code
<?

$okapi_base_url = "http://opencaching.de/okapi/";
$json = file_get_contents($okapi_base_url."services/apisrv/stats");
$data = json_decode($json);
print "Auf Opencaching.de sind ".$data->user_count." Benutzer angemeldet und ".$data->cache-count." Caches registriert.";

?>
resultiert mit der Ausgabe
Zitat
0 Caches registriert
Warum?

LG
Micha
Whenever I try to plan something, it doesn't seems to work out. So why plan, it only leads to disappointment! (Eddie van Halen)

Offline 4_Vs

  • Vereinsmitglied
  • Vereinsmitglied
  • Large
  • *
  • Beiträge: 3159
  • Freier Cacher
    • vaahsen.de
Re: OKAPI HOWTO :)
« Antwort #2 am: 26. August 2013, 17:12:57 »
Mhhh  ::)

Weil ich einen Typo drin hatte :)

<?

$okapi_base_url = "http://opencaching.de/okapi/";
$json = file_get_contents($okapi_base_url."services/apisrv/stats");
$data = json_decode($json);
print "Auf Opencaching.de sind ".$data->user_count." Benutzer angemeldet und ".$data->cache_count." Caches registriert.";

?>

Funktioniert :) - Cool, dann werde ich mal weiter testen ...

Vielleicht schaffe ich es ja soweit, dass ich ein TUT fürs Wiki schreibe, schadet ja nicht, wenn die OKAPI auch für Statistiken o.ä. auf Blogs und Homepages verwendet wird, macht das ganze dann doch auch bekannter ...
Whenever I try to plan something, it doesn't seems to work out. So why plan, it only leads to disappointment! (Eddie van Halen)

Offline 4_Vs

  • Vereinsmitglied
  • Vereinsmitglied
  • Large
  • *
  • Beiträge: 3159
  • Freier Cacher
    • vaahsen.de
Re: OKAPI HOWTO :)
« Antwort #3 am: 26. August 2013, 19:19:21 »
So,

nu hänge ich aber doch :)

Ich möchte meinen letzten Logeintrag abrufen und versuche das so
$json = file_get_contents($okapi_base_url."services/logs/userlogs"."?user_uuid=".$user_uuid."&limit=1"."&consumer_key=".$consumer_key);
$mv_log = json_decode($json);
$mv_lastlog_cache = $mv_log->cache_code;
$mv_lastlog_comment = $mv_log->comment;

Leider geben beide Variablen kein Ergebnis, warum?
Whenever I try to plan something, it doesn't seems to work out. So why plan, it only leads to disappointment! (Eddie van Halen)

Offline ra_sch

  • Micro
  • ***
  • Beiträge: 273
Re: OKAPI HOWTO :)
« Antwort #4 am: 26. August 2013, 20:58:24 »
So,

nu hänge ich aber doch :)

Ich möchte meinen letzten Logeintrag abrufen und versuche das so
$json = file_get_contents($okapi_base_url."services/logs/userlogs"."?user_uuid=".$user_uuid."&limit=1"."&consumer_key=".$consumer_key);
$mv_log = json_decode($json);
$mv_lastlog_cache = $mv_log->cache_code;
$mv_lastlog_comment = $mv_log->comment;

Leider geben beide Variablen kein Ergebnis, warum?

In der Dokumentation steht, dass an dieser stelle in 'Dictionary' zurückgegeben wird, insofern musst du wohl erst noch den ersten (und einzigen) Eintrag herausholen (ohne auch nur die geringste Kenntnis davon zu haben, welche Programmiersprache du verwendest und was json_decode exakt tut).

HTH

ra_sch

BTW: Wenn bei mir (c:geo) irgendetwas in der OKAPI nicht funktioniert, schicke ich die url direkt mit dem browser, die Antwort ist im allgemeinen recht hilfreich, auch im Fehlerfall.

Offline ClanFamily (Mirco)

  • Administrator
  • Normal
  • *****
  • Beiträge: 1338
  • Vorstand, Design & Entwicklung
    • ClanFamily.de
Re: OKAPI HOWTO :)
« Antwort #5 am: 26. August 2013, 21:32:05 »
Hi.. vielleicht hilf Dir der OKAPI Browser?
https://github.com/wrygiel/okapi-browser
Den gibt es auch für Windows... achja.. Apple ;) Murgs. Richtig?

Du kannst auf jeden Fall die Scriptteile und deren Syntax direkt darin prüfen....
Mit feudalen Grüßen,
Mirco aka Clanfamily
- Vorstand -

MeetMe | OC YouTube | OC Talk

Offline 4_Vs

  • Vereinsmitglied
  • Vereinsmitglied
  • Large
  • *
  • Beiträge: 3159
  • Freier Cacher
    • vaahsen.de
Re: OKAPI HOWTO :)
« Antwort #6 am: 26. August 2013, 22:23:15 »
So,

nu hänge ich aber doch :)

Ich möchte meinen letzten Logeintrag abrufen und versuche das so
$json = file_get_contents($okapi_base_url."services/logs/userlogs"."?user_uuid=".$user_uuid."&limit=1"."&consumer_key=".$consumer_key);
$mv_log = json_decode($json);
$mv_lastlog_cache = $mv_log->cache_code;
$mv_lastlog_comment = $mv_log->comment;

Leider geben beide Variablen kein Ergebnis, warum?

In der Dokumentation steht, dass an dieser stelle in 'Dictionary' zurückgegeben wird, insofern musst du wohl erst noch den ersten (und einzigen) Eintrag herausholen (ohne auch nur die geringste Kenntnis davon zu haben, welche Programmiersprache du verwendest und was json_decode exakt tut).

HTH

ra_sch

BTW: Wenn bei mir (c:geo) irgendetwas in der OKAPI nicht funktioniert, schicke ich die url direkt mit dem browser, die Antwort ist im allgemeinen recht hilfreich, auch im Fehlerfall.
Hiho,

also über den Browser werden mir die entsprechenden Daten ausgegeben - kann es daran liegen, dass die Daten aus dem "comment"-Feld als HTML-String zurückgegeben werden und eben dieser unbearbeitet das PHP Skript zerschießt?
[{"uuid":"8e3ece34-0325-11e3-8be1-525400a7f25b","date":"2013-08-12T00:00:00+02:00","cache_code":"OC7EE2","type":"Found it","comment":"Den habe ich heute auf dem Weg nach Fulda gut und schnell gefunden.<br \/>\r\n<br \/>\r\nEinen bissigen Hund habe ich zum Gl\u00fcck nicht gesehen.<br \/>\r\n<br \/>\r\nVielen Dank f\u00fcr den Cache<br \/>\r\n<br \/>\r\n4_Vs"}]
Whenever I try to plan something, it doesn't seems to work out. So why plan, it only leads to disappointment! (Eddie van Halen)

Offline 4_Vs

  • Vereinsmitglied
  • Vereinsmitglied
  • Large
  • *
  • Beiträge: 3159
  • Freier Cacher
    • vaahsen.de
Re: OKAPI HOWTO :)
« Antwort #7 am: 27. August 2013, 09:59:35 »
Also,

um es noch einmal genauer zu definieren:

Über den OKAPI-Browser bekomme ich ebenfalls die erwartete Ausgabe (siehe Anhang). Wenn ich allerdings zum Beispiel den
cache_codeanzeigen lassen möchte, wird der nicht "genommen". Es scheint so, dass ich das Array falsch abrufe - wobei bei den anderen Sachen (siehe Signatur) klappt das einwandfrei - irgendwo muss da ein Haken sein :)

LG
Micha
Whenever I try to plan something, it doesn't seems to work out. So why plan, it only leads to disappointment! (Eddie van Halen)

Offline mic@

  • Vereinsmitglied
  • Large
  • *
  • Beiträge: 6321
  • oc-only Verstecker
Re: OKAPI HOWTO :)
« Antwort #8 am: 27. August 2013, 14:43:28 »
Zitat von: 4_Vs
Es scheint so, dass ich das Array falsch abrufe

Mich wundert Deine in der Maske eingetragene UUID.
Laut oc-Benutzerdatenbank hast du doch das hier:

# Benutzername: 4_Vs
# User-ID:            162754

Offline bohrsty

  • Administrator
  • Normal
  • *****
  • Beiträge: 1359
  • Teamleiter Technik
Re: OKAPI HOWTO :)
« Antwort #9 am: 27. August 2013, 15:01:33 »
[...]
Hiho,

also über den Browser werden mir die entsprechenden Daten ausgegeben - kann es daran liegen, dass die Daten aus dem "comment"-Feld als HTML-String zurückgegeben werden und eben dieser unbearbeitet das PHP Skript zerschießt?
[{"uuid":"8e3ece34-0325-11e3-8be1-525400a7f25b","date":"2013-08-12T00:00:00+02:00","cache_code":"OC7EE2","type":"Found it","comment":"Den habe ich heute auf dem Weg nach Fulda gut und schnell gefunden.<br \/>\r\n<br \/>\r\nEinen bissigen Hund habe ich zum Gl\u00fcck nicht gesehen.<br \/>\r\n<br \/>\r\nVielen Dank f\u00fcr den Cache<br \/>\r\n<br \/>\r\n4_Vs"}]

also json_decode() erzeugt folgende datenstruktur aus der okapi-antwort:
array(1) {
  [0] =>
  class stdClass#1 (5) {
    public $uuid =>
    string(36) "8e3ece34-0325-11e3-8be1-525400a7f25b"
    public $date =>
    string(25) "2013-08-12T00:00:00+02:00"
    public $cache_code =>
    string(6) "OC7EE2"
    public $type =>
    string(8) "Found it"
    public $comment =>
    string(199) "Den habe ich heute auf dem Weg nach Fulda gut und schnell gefunden.<br />
<br />
Einen bissigen Hund habe ich zum Glück nicht gesehen.<br />
<br />
Vielen Dank für den Cache<br />
<br />
4_Vs"
  }
}

da es sich bei der datenstruktur laut okapi-doku um einen array aus cache-objekten handelt (auch ersichtlich an der var_dump-ausgabe "array(1)...") muesste dein code folgendermassen modifiziert eigentlich ein ergebnis liefern:

$json = file_get_contents($okapi_base_url."services/logs/userlogs"."?user_uuid=".$user_uuid."&limit=1"."&consumer_key=".$consumer_key);
$mv_log = json_decode($json);
$mv_lastlog_cache = $mv_log[0]->cache_code;
$mv_lastlog_comment = $mv_log[0]->comment;

also array-element 0 verwenden (=das erste json-objekt), dann die funktionen des json-objekts darauf anwenden...

mir hilft gerne eine debug-ausgabe wie
die(var_dump($mv_log));nach der zuweisung von $mv_log...
gruss Nils (bohrsty)


Offline 4_Vs

  • Vereinsmitglied
  • Vereinsmitglied
  • Large
  • *
  • Beiträge: 3159
  • Freier Cacher
    • vaahsen.de
Re: OKAPI HOWTO :)
« Antwort #10 am: 27. August 2013, 17:17:29 »
Aaah,

das werde ich gleich mal testen - ich habe mich da vom "limit" verwirren lassen ....

Ich geb gleich Bescheid - aber danke schonmal fürs Hirnschmalzen - ist schon schlimm wenn die Noobs auch was "programmieren" wollen :)
Whenever I try to plan something, it doesn't seems to work out. So why plan, it only leads to disappointment! (Eddie van Halen)

Offline 4_Vs

  • Vereinsmitglied
  • Vereinsmitglied
  • Large
  • *
  • Beiträge: 3159
  • Freier Cacher
    • vaahsen.de
Re: OKAPI HOWTO :)
« Antwort #11 am: 27. August 2013, 17:57:52 »
Yieha!

Danke Nils ;D
Whenever I try to plan something, it doesn't seems to work out. So why plan, it only leads to disappointment! (Eddie van Halen)

Offline 4_Vs

  • Vereinsmitglied
  • Vereinsmitglied
  • Large
  • *
  • Beiträge: 3159
  • Freier Cacher
    • vaahsen.de
Re: OKAPI HOWTO :)
« Antwort #12 am: 27. August 2013, 18:02:10 »
Hiho,

das Ergebnis will ich euch nicht vorenthalten -> mein neues Widget auf meine Homepage :)

LG
Micha
Whenever I try to plan something, it doesn't seems to work out. So why plan, it only leads to disappointment! (Eddie van Halen)

Offline ClanFamily (Mirco)

  • Administrator
  • Normal
  • *****
  • Beiträge: 1338
  • Vorstand, Design & Entwicklung
    • ClanFamily.de
Re: OKAPI HOWTO :)
« Antwort #13 am: 29. August 2013, 12:11:29 »
Hey, das ist cool.OKAPI läuft...
Mit feudalen Grüßen,
Mirco aka Clanfamily
- Vorstand -

MeetMe | OC YouTube | OC Talk

Offline 4_Vs

  • Vereinsmitglied
  • Vereinsmitglied
  • Large
  • *
  • Beiträge: 3159
  • Freier Cacher
    • vaahsen.de
Re: OKAPI HOWTO :)
« Antwort #14 am: 29. August 2013, 13:00:30 »
Hey, das ist cool.OKAPI läuft...
Jo,

und ist gar nicht so schwer :)

Siehe meine Signatur - das war auch recht simpel :)
Whenever I try to plan something, it doesn't seems to work out. So why plan, it only leads to disappointment! (Eddie van Halen)