kostenloser Webspace werbefrei: lima-city


Eigener Text statt Fehlermeldung / Verfügbarkeit einer API

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    ultimate-bravery

    ultimate-bravery hat kostenlosen Webspace.

    Hallo,
    ich greife mit meinem Code auf eine API zu und es kann hin und wieder sein, dass diese API nicht erreichbar ist. Dann werden auf der Seite natürlich überall Fehlermeldungen ausgegeben.

    Ist es möglich, dass man diese Fehlermeldungen mit seinem eigenen Text wie z.B. "der Dienst ist momentan nicht erreichbar" ersetzen kann?

    Oder kann man am Anfang des Codes überprüfen, ob die API erreichbar ist? Falls sie nicht erreichbar ist, hätte die Seite dann ja bei mir auch eine andere Struktur. Also die ganzen Tabellen und so wo die Werte aus der API drin sind könnten dann ja weg bleiben, sodass nur eine einfache Meldung kommt. Also in etwas so:

    Wenn API erreichbar{
    Alle Informationen in Tabellen etc ausgeben
    }
    wenn nicht{
    Kurze Meldung ausgeben
    }

    Würde mich freuen, wenn mir jemand helfen kann.

    Gruß
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. ultimate-bravery schrieb:
    Hallo,
    ich greife mit meinem Code auf eine API zu und es kann hin und wieder sein, dass diese API nicht erreichbar ist. Dann werden auf der Seite natürlich überall Fehlermeldungen ausgegeben.

    Ist es möglich, dass man diese Fehlermeldungen mit seinem eigenen Text wie z.B. "der Dienst ist momentan nicht erreichbar" ersetzen kann?

    Oder kann man am Anfang des Codes überprüfen, ob die API erreichbar ist? Falls sie nicht erreichbar ist, hätte die Seite dann ja bei mir auch eine andere Struktur. Also die ganzen Tabellen und so wo die Werte aus der API drin sind könnten dann ja weg bleiben, sodass nur eine einfache Meldung kommt. Also in etwas so:

    Wenn API erreichbar{
    Alle Informationen in Tabellen etc ausgeben
    }
    wenn nicht{
    Kurze Meldung ausgeben
    }

    Würde mich freuen, wenn mir jemand helfen kann.

    Gruß
    yo mey! in prinzip eh so ungefähr. nur - dass wir hier nicht im blindflug gegen eine staudamm krachen - welche api????
  4. Autor dieses Themas

    ultimate-bravery

    ultimate-bravery hat kostenlosen Webspace.

    Es geht um eine League of Legends API. Hier mal ein Link:

    http://api.captainteemo.com/player/euw/iNono/recent_games

    Spielt das denn eine Rolle?
  5. ultimate-bravery schrieb:
    Es geht um eine League of Legends API. Hier mal ein Link:

    http://api.captainteemo.com/player/euw/iNono/recent_games

    Spielt das denn eine Rolle?


    json response ok, und wie sieht ne error msg aus ?

    wenn im feld X folgendes steht dann gib Y zurück




    {
    "success":false,
    "error":"Summoner blah12345 was not found."
    }

    und was brauchst du jetzt ?

    Beitrag zuletzt geändert: 31.5.2013 17:17:58 von n0tiert
  6. Autor dieses Themas

    ultimate-bravery

    ultimate-bravery hat kostenlosen Webspace.

    Ich weiß nicht mehr genau, wie die Meldungen waren. Aber als die API gestern nicht verfügbar war, hab ich hin und wieder die API aufgerufen. Manchmal kam dann ein kurzer XML Code, wo dann etwas wie "success": false und eine kurze Fehlerbeschreibung kam aber manchmal kam auch eine 504 - Gateway Timeout Seite.



    Beitrag zuletzt geändert: 31.5.2013 17:22:35 von ultimate-bravery
  7. du machst doch ein ajax request

    wenn der "false" bzw "error" ist

    kannste im doch deine msg zurück geben

  8. Autor dieses Themas

    ultimate-bravery

    ultimate-bravery hat kostenlosen Webspace.

    Ja solange die API noch den Wert "succes" ausgibt ist es kein Problem. Aber falls die API gar nicht aufrufbar ist, also falls z.B. eine 504 - Gateway Timeout Seite kommt, kann man ja auch nicht auf den Wert, der in succes steht, zugreifen.
  9. ultimate-bravery schrieb:
    Es geht um eine League of Legends API. Hier mal ein Link:

    http://api.captainteemo.com/player/euw/iNono/recent_games

    Spielt das denn eine Rolle?
    möglicher weise ;) [?]

    also die api kenne ich nicht. wenn du aber auch probleme hast mit der erreichbrkeit überhaupt (504), dann würde ich so vorgehen:
    <?php
    $file = 'http://api.captainteemo.com/player/euw/iNono/recent_games';
    
    $switch = 1;
    if((bool)strlen($resp = file_get_contents($file, null, null, null, $switch))) {
      echo 'API erreichbar';
    } else {
      echo 'WTF API';
    }
    exit('<pre>'.$resp);
    das ding versucht (nur!) 1b zu laden, wenn es geht dann ist's OK, und wenn nicht dann ... yo! klare fälle.
    wenn du in die variable $switch z.b. '0' eingibst, hast du von dir aus die api ausgeschaltet (obschon eventuell erreichbar ist ;) statt 1 o. 0 kannst natürlich - von mir aus - auch 200 oder so eingeben, aber zum testen reicht allemal 1b.

    Beitrag zuletzt geändert: 31.5.2013 17:38:48 von czibere
  10. Autor dieses Themas

    ultimate-bravery

    ultimate-bravery hat kostenlosen Webspace.

    Ok danke, scheint aber noch nicht zu klappen. Es kommt folgende Fehlermeldung:

    Warning: file_get_contents({ "_": { "ImportantNotice": "", "APP_ID": null }, "success": true, "shard": "Europe_West:ODU0NGE3MDNjNWQ5OTE0ODQzNzRiMGExZGE0NWQzOWI2MTUwZjIwZQ", "player": { "accountId": 22086670, "summonerId": 19380304, "name": "iNono", "icon": 508, "internalName": "inono", "level": 30 }, "data": { "summonerLeagues": { "array": [ { "queue": "RANKED_SOLO_5x5", "name": "Ashe's Swarm", "entries": { "array": [ { "previousDayLeaguePosition": 18, "timeLa in ...


    Außer das in der Fehlermeldung wahrscheinlich die ersten 1b Werte aus der API ausgegeben werden, sagt die mir nicht viel.

    Es handelt sich gerade um diesen Link:

    http://api.captainteemo.com/player/euw/iNono/leagues

    EDIT: Hat sich erldeigt. Der Code klappt. War ein Fehler von mir.

    Beitrag zuletzt geändert: 31.5.2013 19:06:23 von ultimate-bravery
  11. Vorschlag:
    Response-Header abfragen.
    $url = 'http://api.captainteemo.com/player/euw/iNono/recent_games';
    $out = get_headers($url);
    echo "ANTWORT: ".$out[0]."<br>";
    if($out[0]=="HTTP/1.0 200 OK"){
    echo "ALLES OK";}
    else{echo "ETWAS LIEF SCHIEF";}
  12. timebandit schrieb:
    Vorschlag:
    Response-Header abfragen.
    $url = 'http://api.captainteemo.com/player/euw/iNono/recent_games';
    $out = get_headers($url);
    echo "ANTWORT: ".$out[0]."<br>";
    if($out[0]=="HTTP/1.0 200 OK"){
    echo "ALLES OK";}
    else{echo "ETWAS LIEF SCHIEF";}
    was natürlich auch geht. trotzdem würde ich ornungshalber statt 'if($out[0]=="HTTP/1.0 200 OK"){' eben (siehe php.net) 'if($out[0] !== false) {' schreiben (es könnte als antwort auch 'HTTP/1.1 200 OK' kommen, was ja kein fehler ist ;)
  13. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!