For the complete documentation index, see llms.txt. This page is also available as Markdown.

PHP-Beispiele

Überblick

Alle Codebeispiele in diesem Abschnitt verwenden die folgenden Klassen.

Die Request-Klasse verwendet cURL um die Anfragen an die API zu stellen.

Die Response-Klasse enthält die API-Antwort und Informationen zum zurückgegebenen Statuscode.

Request- und Response-Klassen
class Request {

        /**
         * @var resource
         */
        protected $_request;

        /**
         * @var integer
         */
        protected $_method;

        /**
         * @var string
         */
        protected $_url;

        /**
         * @var array
         */
        protected $_headers = array(
            'Content-type: application/json'
        );

        /**
         * @var string|array
         */
        protected $_params;

        /**
         * @var object Response
         */
        protected $_reponse;

        /**
         * Konstruktor
         *
         * @param   string      $url
         * @param   string      $method
         * @param   array       $params
         */
        public function __construct($url, $method, $params = array()) {

            $this->_url = $url;

            // Die Methode festlegen
            $this->_method = $method;

            // Die Parameter festlegen
            $this->_params = $params;
        }

        /**
         * Die Request-Methode bestimmen
         *
         * @param   string  $method
         */
        private function setMethod() {

            switch($this->_method) {
                case 'GET':
                    break;
                case 'POST':
                    curl_setopt($this->_request, CURLOPT_POST, 1);
                    break;
                case 'PUT':
                    curl_setopt($this->_request, CURLOPT_CUSTOMREQUEST, 'PUT');
                    break;
                case 'DELETE':
                    curl_setopt($this->_request, CURLOPT_CUSTOMREQUEST, 'DELETE');
                    break;
            }
        }

        /**
         * Authorization-Header hinzufügen
         *
         * @param   string  $type
         * @param   string  $token
         */
        public function setAuthorizationHeader($type, $token) {

            $authorization = $type . ' ' . $token;

            $this->_headers[] = 'Authorization: ' . $authorization;
        }

        /**
         * Body zur Anfrage hinzufügen
         */
        private function addBody() {

            if($this->_method != 'GET' && empty($this->_params) == false) {

                if(is_array($this->_params)) {
                    // Das Array als JSON kodieren
                    $this->_params = json_encode($this->_params);
                }

                curl_setopt($this->_request, CURLOPT_POSTFIELDS, $this->_params);

                // Einen Content-length-Header hinzufügen
                $this->_headers[] = 'Content-length: ' . strlen($this->_params);
            }
        }

        /**
         * Einen Query-String zur Anfrage hinzufügen
         */
        private function addQueryString() {

            if($this->_method == 'GET' && is_array($this->_params) && count($this->_params) > 0) {

                $query_string = '?';

                foreach($this->_params as $param => $value) {

                    $query_string = $query_string . $param . '=' . $value . '&';
                }

                trim($query_string, '&');

                $this->_url = $this->_url . $query_string;
            }
            else {

                if(is_array($this->_params) && count($this->_params) > 0 && strpos($this->_url, '{') !== false) {
                    // Parameter per Muster mit der URL abgleichen
                    foreach($this->_params as $param => $value) {
                        $this->_url = preg_replace('/{' . $param . '}/', $value, $this->_url);
                    }
                }
            }
        }

        /**
         * Die Anfrage senden
         */
        public function send() {

            // cURL-Anfrage initialisieren
            $this->_request = curl_init();

            // Die Antwort als String zurückgeben
            curl_setopt($this->_request, CURLOPT_RETURNTRANSFER, 1);

            // Einen Query-String hinzufügen
            $this->addQueryString();

            // Die URL festlegen
            curl_setopt($this->_request, CURLOPT_URL, $this->_url);

            // Anfragemethode festlegen
            $this->setMethod();

            // Einen Body hinzufügen
            $this->addBody();

            if(empty($this->_headers) == false) {
                // Die Header festlegen
                curl_setopt($this->_request, CURLOPT_HTTPHEADER, $this->_headers);
            }

            // SSL-Prüfungen deaktivieren
            curl_setopt($this->_request, CURLOPT_SSL_VERIFYPEER, false);
            curl_setopt($this->_request, CURLOPT_SSL_VERIFYHOST, false);

            // Die Anfrage senden und den Body speichern
            $this->_response = new Response(curl_exec($this->_request));

            // Den Statuscode festlegen
            $this->_response->setStatusCode(curl_getinfo($this->_request, CURLINFO_HTTP_CODE));

            // Die Verbindung schließen
            curl_close($this->_request);
        }

        /**
         * Die Antwort abrufen
         *
         * @return object
         */
        public function getResponse() {

            return $this->_response;
        }
    }

    class Response {

        /**
         * @var array
         */
        protected $_reason_phrases = array(
            //Informationsmeldungen 1xx
            100 => "Fortfahren",
            101 => "Protokolle wechseln",

            // Erfolgreich 2xx
            200 => "OK",
            201 => "Erstellt",
            202 => "Akzeptiert",
            203 => "Nicht autoritative Information",
            204 => "Kein Inhalt",
            205 => "Inhalt zurücksetzen",
            206 => "Teilinhalt",

            // Weiterleitung 3xx
            300 => "Mehrere Auswahlmöglichkeiten",
            301 => "Dauerhaft verschoben",
            302 => "Gefunden",
            303 => "Siehe andere",
            304 => "Nicht geändert",
            305 => "Proxy verwenden",
            306 => "(Ungenutzt)",
            307 => "Vorübergehende Umleitung",

            // Client-Fehler 4xx
            400 => "Ungültige Anfrage",
            401 => "Nicht autorisiert",
            402 => "Zahlung erforderlich",
            403 => "Verboten",
            404 => "Nicht gefunden",
            405 => "Methode nicht erlaubt",
            406 => "Nicht akzeptabel",
            407 => "Proxy-Authentifizierung erforderlich",
            408 => "Anfrage-Timeout",
            409 => "Konflikt",
            410 => "Verschwunden",
            411 => "Länge erforderlich",
            412 => "Vorbedingung fehlgeschlagen",
            413 => "Anfrageentität zu groß",
            414 => "Anfrage-URI zu lang",
            415 => "Nicht unterstützter Medientyp",
            416 => "Angeforderter Bereich nicht erfüllbar",
            417 => "Erwartung fehlgeschlagen",

            // Server-Fehler 5xx
            500 => "Interner Serverfehler",
            501 => "Nicht implementiert",
            502 => "Fehlerhaftes Gateway",
            503 => "Dienst nicht verfügbar",
            504 => "Gateway-Timeout",
            505 => "HTTP-Version nicht unterstützt"
        );

        /**
         * @var integer
         */
        protected $_status_code;

        /**
         * @var string
         */
        protected $_body;

        /**
         * Konstruktor
         *
         * @param   string      $body
         */
        public function __construct($body) {

            $this->_body = $body;
        }

        /**
         * Konstruktor
         *
         * @param   string      $status_code
         */
        public function setStatusCode($status_code) {

            $this->_status_code = $status_code;
        }

        /**
         * Statuscode abrufen
         *
         * @return  integer
         */
        public function getStatusCode() {

            return $this->_status_code;
        }

        /**
         * Body abrufen
         *
         * @return  string
         */
        public function getBody() {

            return $this->_body;
        }

        /**
         * JSON-dekodierten Body abrufen
         *
         * @return  object|null
         */
        public function getBodyDecoded() {

            return json_decode($this->_body);
        }

        /**
         * Statusphrase abrufen
         *
         * @return string|boolean
         */
        public function getReasonPhrase() {

            if(array_key_exists($this->_status_code, $this->_reason_phrases)) {

                return $this->_reason_phrases[$this->_status_code];
            }
            else {

                return false;
            }
        }
    }

Anmelden

Es gibt zwei Möglichkeiten, die Anmeldung Route:

  • mit Benutzername und Passwort

  • mit API-Token (Access-Token)

Beispiel für die Anmeldung mit Benutzername- und Passwort-Parametern.

<?php

    // Request- und Response-Klassen einbinden

    $url = 'https://api.example.com/v2/login';

    $params = array(
        'username'  => 'sample_username',
        'password'  => 'sample_password'
    );

    // Ein neues Request-Objekt erstellen
    $request = new Request($url, 'POST', $params);

    // Die Anfrage senden
    $request->send();

    // Das Response-Objekt abrufen
    $response = $request->getResponse();

    if($response->getStatusCode() == 200) {

        // Die Details des Session-Tokens abrufen
        $token = $response->getBodyDecoded();

        print_r($token);
    }
    else {

        echo $response->getStatusCode() . PHP_EOL;
        echo $response->getReasonPhrase() . PHP_EOL;
        echo $response->getBody() . PHP_EOL;
    }
?>

Beispiel für die Anmeldung mit API-Token (Access-Token)

Authentifizierung

Jede Anfrage an benutzerbezogene Inhalte erfordert einen Autorisierung Header, dessen Wert den Token-Typ und den von der API-Login-Anfrage erhaltenen Session-Token enthält.

Eine gültige /login Anfrage an die API liefert den folgenden JSON-Payload zurück.

Die Session-Token sollte in alle nachfolgenden Anfragen an die API zu benutzerbezogenen Inhalten aufgenommen werden.

Die type ist dem Token voranzustellen, getrennt durch ein einzelnes Leerzeichen.

Die expires_in ist die Zeit in Sekunden, für die das Token gültig ist. Wenn diese Zeit abläuft, muss über die /login-Anfrage ein neues Token angefordert werden.

Beispiel zum Abrufen und Setzen des Authorization-Headers mit Benutzername und Passwort

Beispiel zum Abrufen und Setzen des Authorization-Headers mit API-Token

Sammlungen

Das Folgende ist ein Beispiel für eine Anfrage zum Abrufen der Browser Sammlung.

Statistiken

Das folgende ist ein Beispiel für eine Anfrage eines Werbetreibenden an statistics/a/date.

Falls additional_group_by der Wert definiert ist, wird die Anfrage nach dem Haupt-Routenfeld und den zusätzlichen Feld(en) gruppiert.

Beispiel für Statistiken pro Datum, gefiltert nach Kampagnen-ID 1234.

Beispiel für Statistiken pro Datum mit zusätzlicher Gruppierung nach Kampagne.

post /statistics/a/global

Globale Werbetreibenden-Statistiken abrufen

Beispiel 1 für globale Statistiken

Beispiel für eine Anfrage globaler Statistiken.

Nur der group_by Parameter ist obligatorisch. Die Standardwerte für die anderen Parameter finden Sie Hier.

Bitte beachten Sie, dass die Routen für globale Statistiken (statistics/a/global, statistics/p/global) ein anderes Parameterformat haben.

Beispiel 2 für globale Statistiken

Statistiken pro Datum abrufen, einschließlich Gesamtsummen.

Beispiel 3 für globale Statistiken

Statistiken pro Kampagne und Land abrufen, gefiltert nach einem bestimmten Datum und nach Impressionen sortiert.

Beispiel 4 für globale Statistiken

Publisher-Statistiken pro Zone und Land abrufen, gefiltert nach einem bestimmten Betriebssystem.

Zuletzt aktualisiert

War das hilfreich?