Je crée un client de service Web REST en PHP et j'utilise actuellement curl pour faire des requêtes au service.
Comment utiliser curl pour effectuer des requêtes authentifiées (http de base)? Dois-je ajouter les en-têtes moi-même?
Je crée un client de service Web REST en PHP et j'utilise actuellement curl pour faire des requêtes au service.
Comment utiliser curl pour effectuer des requêtes authentifiées (http de base)? Dois-je ajouter les en-têtes moi-même?
Tu veux ça:
curl_setopt($ch, CURLOPT_USERPWD, $username . ":" . $password);
Zend a un client REST et zend_http_client et je suis sûr que PEAR a une sorte de wrapper. Mais c'est assez facile à faire par vous-même.
Ainsi, la demande entière pourrait ressembler à ceci:
$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
envoie essentiellement la base64 de lauser:password
chaîne avec l'en-tête http comme ci-dessous:Donc, à part le,
CURLOPT_USERPWD
vous pouvez également utiliser l'HTTP-Request
option d'en-tête comme ci-dessous avec d'autres en-têtes:la source
CURLOPT_USERPWD
fonctionné pour moi.La manière la plus simple et native consiste à utiliser directement CURL.
Cela fonctionne pour moi:
la source
Contrairement à SOAP, REST n'est pas un protocole standardisé, il est donc un peu difficile d'avoir un "client REST". Cependant, étant donné que la plupart des services RESTful utilisent HTTP comme protocole sous-jacent, vous devriez pouvoir utiliser n'importe quelle bibliothèque HTTP. En plus de cURL, PHP a ces derniers via PEAR:
HTTP_Request2
qui a remplacé
HTTP_Request
Un exemple de la façon dont ils font l'authentification HTTP de base
Ils prennent également en charge Digest Auth
la source
Si le type d'autorisation est Authentification de base et que les données publiées sont json, faites comme ceci
la source
Yahoo a un tutoriel sur la façon d'appeler leurs services REST en utilisant PHP:
Faites Yahoo! Appels REST de service Web avec PHP
Je ne l'ai pas utilisé moi-même, mais Yahoo est Yahoo et devrait garantir au moins un certain niveau de qualité. Cependant, ils ne semblent pas couvrir les demandes PUT et DELETE.
En outre, les notes contribuées par l' utilisateur à curl_exec () et autres contiennent de nombreuses bonnes informations.
la source
Il vous suffit de spécifier les options CURLOPT_HTTPAUTH et CURLOPT_USERPWD:
Ou spécifiez l'en-tête:
Exemple de buse:
Voir https://github.com/andriichuk/php-curl-cookbook#basic-auth
la source
Guzzle très activement entretenu de Michael Dowling est une bonne façon de procéder. Outre l'interface élégante, les appels asynchrones et la conformité PSR, il rend les en-têtes d'authentification pour les appels REST très simples:
Voir les documents .
la source
Pour ceux qui ne veulent pas utiliser curl:
la source
Il existe plusieurs cadres REST. Je recommanderais fortement de regarder dans Slim mini Framework pour PHP
Voici une liste d'autres.
la source