Eigener Text statt Fehlermeldung / Verfügbarkeit einer API
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
abfragen
antwort
ausgeben
bleiben
code
einfache meldung
fehlermeldung
freuen
header
http
information
jemand
kurze meldung
null
rolle
struktur
switch
tabelle
url
vorschlag
-
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ß -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
ultimate-bravery schrieb:
yo mey! in prinzip eh so ungefähr. nur - dass wir hier nicht im blindflug gegen eine staudamm krachen - welche api????
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ß -
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? -
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 -
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 -
du machst doch ein ajax request
wenn der "false" bzw "error" ist
kannste im doch deine msg zurück geben
-
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.
-
ultimate-bravery schrieb:
möglicher weise ;) [?]
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?
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 -
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 -
timebandit schrieb:
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 ;)
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";}
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage