• Hallo,

    da es das erste mal für mich ist, dass ich mich mit API's beschäftige und nach langem Suchen nicht auf die Lösung gekommen bin, brauche ich eure Hilfe. Vielleicht kennt sich damit ja jemand aus.

    Ich würde gerne eine API auf meiner Website einfügen, die API läuft mit Json, durch Web Tokens.

    Gegeben ist:

    Mein API Token:

    Code
    eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiIsImtpZCI6IjI4YTMxOGY3LTAwMDAtYTFlYi03ZmExLTJjNzQzM2M2Y2NhNSJ9.eyJpc3MiOiJzdXBlcmNlbGwiLCJhdWQiOiJzdXBlcmNlbGw6Z2FtZWFwaSIsImp0aSI6IjQ4MjdkZGIxLTY3NTMtNDdjYy05YmJlLTE2ODkzZTQ2MTEyMCIsImlhdCI6MTQ1NDUzMjkwNiwic3ViIjoiZGV2ZWxvcGVyL2E0Mjc0YmEwLTZjZTYtNTEyNS02MjIxLTliM2Y1YTcxNzcxZiIsInNjb3BlcyI6WyJjbGFzaCJdLCJsaW1pdHMiOlt7InRpZXIiOiJkZXZlbG9wZXIvc2lsdmVyIiwidHlwZSI6InRocm90dGxpbmcifSx7ImNpZHJzIjpbIjgzLjE3NS44OS4zNCJdLCJ0eXBlIjoiY2xpZW50In1dfQ.aD0y4WRpwfRowwkLrkfEMsL1fI0RWTEg6HhoXrUzZEll7qeSBw3D8eRR5f3sO1iqM1FiPfE2XmqhHxgcmz3qoA


    Curl

    Code
    curl -X GET --header "Accept: application/json" --header "authorization: Bearer <API token>" "https://api.clashofclans.com/v1/clans/%23LL8RGRUY"


    Request URL

    Code
    https://api.clashofclans.com/v1/clans/%23LL8RGRUY

    Response Body (Der ist vom jetzigen Stand, dh. relativ unnötig, jedoch sollte soetwas nur auf aktuellem Stand zurückgegeben werden und somit auf der Website ausgegeben werden)


    Response Headers


    Code
    {
      "content-type": "application/json; charset=utf-8",
      "cache-control": "public max-age=600"
    }


    Vielleicht kann mir jemand weiterhelfen und sagen, wie ich das Handhaben muss, dass ich an die Daten komme und ich diese dann anzeigen kann. Habe wie gesagt leider keine Erfahrung damit, darum möchte ich mich jetzt damit beschäftigen.

    Liebe Grüße

    :P

  • Ja, arbeite mit PHP.

    Ich schaue mir das mal an, danke!

    Edit: Habe nun Aaerix seinen Rat befolgt und es versucht, jedoch kommt bei mir der Fehler "Warning: json_decode() expects parameter 1 to be string, resource given inC:\xampp\htdocs\be\logged_in\home.php on line 196"

    Der Code:

    Was hab ich falsch gemacht?

    Liebe Grüße

    :P

    Einmal editiert, zuletzt von .spirit.. (27. Februar 2016 um 13:07)

  • Dein Problem ist, dass du zwar cURL initialisierst, aber nicht ausführst.
    $rest ist in diesem Fall die Ressource. Das, was du brauchst ist die Antwort vom Webserver nach deinem Request.
    Das ist möglich durch

    Code
    $output = curl_exec($rest);

    Wenn du dich fragst, was das ganze bedeutet: http://php.net/manual/de/function.curl-exec.php

    Du kannst dann die Response durch json_decode($output, true); in ein assoziatives Array umwandeln.

  • Dein Problem ist, dass du zwar cURL initialisierst, aber nicht ausführst.
    $rest ist in diesem Fall die Ressource. Das, was du brauchst ist die Antwort vom Webserver nach deinem Request.
    Das ist möglich durch

    Code
    $output = curl_exec($rest);

    Wenn du dich fragst, was das ganze bedeutet: http://php.net/manual/de/function.curl-exec.php

    Du kannst dann die Response durch json_decode($output, true); in ein assoziatives Array umwandeln.

    Danke! :D
    Hat jetzt funktioniert!

    :P

  • Hab jetzt noch eine kleine Frage bzgl der Ausgabe, hat bisher alles gepasst nur jetzt komm ich bei einem "Sonderfall" nicht weiter, undzwar
    wenn ich hier bei dem Code den "name" ausgeben will, wie stelle ich das an?

    Spoiler anzeigen

    Das hat ohne probleme geklappt:

    Code
    "location": {
        "id": 32000094,
        "name": "Germany",
        "isCountry": true,
        "countryCode": "DE"
      },

    Hier konnte ich name oder auch countryCode ausgeben, beim oberen geht es irgendwie nicht, obwohl es fast gleich aufgebaut ist, nur ist beim oberen noch eine [ Klammer drinnen.

    Wie gebe ich das obere aus?

    Vielleicht weiß es jemand zufällig.

    Liebe Grüße

    EDIT: Sorry wegen Doppelpost, ich bitte einen MOD die Posts zusammenzuführen oder den obigen zu löschen.

    :P

  • memberList besteht im Gegensatz zu location aus mehreren Elementen.
    Du musst also erst auf ein Element und dann auf den Wert zugreifen.

    PHP
    echo $output["memberList"][0]["name"];


    bzw. mit einer Schleife

    PHP
    foreach($output["memberList"] as $key => $member) {
      echo $member["name"];
    }

  • memberList besteht im Gegensatz zu location aus mehreren Elementen.
    Du musst also erst auf ein Element und dann auf den Wert zugreifen.

    PHP
    echo $output["memberList"][0]["name"];

    bzw. mit einer Schleife

    PHP
    foreach($output["memberList"] as $key => $member) {
      echo $member["name"];
    }

    Danke erstmal für die Hilfe, jedoch hat es nicht geklappt. Weder im ersten Code oder mit der Schleife.

    Wenn ich den Code reinkopiere, wie du ihn gepostet hast, kommt der Error:
    Warning: Illegal string offset 'memberList' in C:\xampp\htdocs\be\logged_in\myclan\clans.php on line 77


    Warning: Illegal string offset 'name' in C:\xampp\htdocs\be\logged_in\myclan\clans.php on line 77
    {

    Ich hab es auch versucht, das $output auf $obj zu ändern, denn so habe ich es decodiert aus dem json format.
    $obj = json_decode($output);

    Hat jedoch auch nicht geklappt...

    Dennoch danke

    :P

  • sorry das ich dieses thema pushe, aber für andere nochmal:
    PHP formatiert das JSON standardmäßig in ein Objekt, aber Ihr könnt durch ein zweit Parameter ihn in ein assoc array umwandeln lassen.


    Code
    $json = '{ "test" : [{"girl" : true, "motto" : "mir nicht so gut"}] }';
    $output = json_decode($json, true) //zweit Parameter true, oder lasst es weg, falls ihr ein objekt haben wollt

    wenn ihr dann ein var_dump(); auf $output macht, solltet ihr ein array zurück bekommen (code nicht gestet, müsste aber richtig sein XD)

    Einmal editiert, zuletzt von Uschi#2 (12. Juli 2016 um 10:50)

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!