Ich erstelle einen REST-Webdienst-Client in PHP und verwende derzeit Curl, um Anforderungen an den Dienst zu stellen.
Wie verwende ich Curl, um authentifizierte (http basic) Anfragen zu stellen? Muss ich die Header selbst hinzufügen?
Ich erstelle einen REST-Webdienst-Client in PHP und verwende derzeit Curl, um Anforderungen an den Dienst zu stellen.
Wie verwende ich Curl, um authentifizierte (http basic) Anfragen zu stellen? Muss ich die Header selbst hinzufügen?
Du willst das:
curl_setopt($ch, CURLOPT_USERPWD, $username . ":" . $password);
Zend hat einen REST-Client und zend_http_client und ich bin sicher, PEAR hat eine Art Wrapper. Aber es ist einfach genug, es alleine zu machen.
Die gesamte Anfrage könnte also ungefähr so aussehen:
$ch = curl_init($host);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/xml', $additionalHeaders));
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_USERPWD, $username . ":" . $password);
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $payloadName);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
$return = curl_exec($ch);
curl_close($ch);
CURLOPT_USERPWD
sendet im Grunde die base64 deruser:password
Zeichenfolge mit http-Header wie folgt:Abgesehen von
CURLOPT_USERPWD
können Sie also auch dieHTTP-Request
Header-Option wie unten mit anderen Headern verwenden:quelle
CURLOPT_USERPWD
hat bei mir funktioniert.Am einfachsten und nativsten ist es, CURL direkt zu verwenden.
Das funktioniert bei mir:
quelle
Im Gegensatz zu SOAP ist REST kein standardisiertes Protokoll, daher ist es etwas schwierig, einen "REST-Client" zu haben. Da die meisten RESTful-Dienste jedoch HTTP als zugrunde liegendes Protokoll verwenden, sollten Sie in der Lage sein, jede HTTP-Bibliothek zu verwenden. Zusätzlich zu cURL hat PHP diese über PEAR:
HTTP_Request2
welches ersetzt
HTTP_Request
Ein Beispiel dafür, wie sie HTTP Basic Auth ausführen
Die unterstützen auch Digest Auth
quelle
Wenn der Autorisierungstyp Basic auth ist und die veröffentlichten Daten json sind, gehen Sie wie folgt vor
quelle
Yahoo hat ein Tutorial zum Tätigen von Anrufen zu seinen REST-Diensten mit PHP:
Machen Sie Yahoo! Webdienst-REST-Aufrufe mit PHP
Ich habe es selbst nicht benutzt, aber Yahoo ist Yahoo und sollte zumindest ein gewisses Maß an Qualität garantieren. Sie scheinen jedoch keine PUT- und DELETE-Anfragen abzudecken.
Außerdem enthalten die vom Benutzer bereitgestellten Hinweise zu curl_exec () und anderen viele gute Informationen.
quelle
Sie müssen nur die Optionen CURLOPT_HTTPAUTH und CURLOPT_USERPWD angeben:
Oder geben Sie den Header an:
Beispiel für einen Verzehr:
Siehe https://github.com/andriichuk/php-curl-cookbook#basic-auth
quelle
Michael Dowlings sehr aktiv gepflegter Guzzle ist ein guter Weg. Abgesehen von der eleganten Benutzeroberfläche, dem asynchronen Aufruf und der PSR-Konformität sind die Authentifizierungsheader für REST-Aufrufe kinderleicht:
Siehe die Dokumente .
quelle
Für diejenigen, die keine Locken verwenden möchten:
quelle
Es gibt mehrere REST-Frameworks. Ich würde dringend empfehlen, sich mit Slim Mini Framework für PHP zu befassen.
Hier ist eine Liste von anderen.
quelle