私は PHP で REST Web サービス クライアントを構築しています。現在、curl を使用してサービスへのリクエストを行っています。
curl を使用して認証済み (http 基本) リクエストを作成するにはどうすればよいですか? 自分でヘッダーを追加する必要がありますか?
私は PHP で REST Web サービス クライアントを構築しています。現在、curl を使用してサービスへのリクエストを行っています。
curl を使用して認証済み (http 基本) リクエストを作成するにはどうすればよいですか? 自分でヘッダーを追加する必要がありますか?
あなたはこれを求めている:
curl_setopt($ch, CURLOPT_USERPWD, $username . ":" . $password);
Zend には REST クライアントと zend_http_client があり、PEAR にはある種のラッパーがあると確信しています。しかし、自分で行うのは簡単です。
したがって、リクエスト全体は次のようになります。
$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基本的に、user:password以下のような http ヘッダーを含む文字列の base64 を送信します。
Authorization: Basic dXNlcjpwYXNzd29yZA==
したがって、ヘッダーオプションとは別に、以下のように他のヘッダーでCURLOPT_USERPWDも使用できます。HTTP-Request
$headers = array(
'Content-Type:application/json',
'Authorization: Basic '. base64_encode("user:password") // <---
);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
SOAP とは異なり、REST は標準化されたプロトコルではないため、「REST クライアント」を持つのは少し難しいです。ただし、ほとんどの RESTful サービスは基になるプロトコルとして HTTP を使用するため、任意の HTTP ライブラリを使用できるはずです。cURL に加えて、PHP には PEAR 経由で次の機能があります。
置き換えた
HTTP 基本認証の方法のサンプル
// This will set credentials for basic auth
$request = new HTTP_Request2('http://user:password@www.example.com/secret/');
ダイジェスト認証もサポート
// This will set credentials for Digest auth
$request->setAuth('user', 'password', HTTP_Request2::AUTH_DIGEST);
Yahoo には、PHP を使用して REST サービスを呼び出すためのチュートリアルがあります。
Yahoo! PHP を使用した Web サービス REST 呼び出し
私自身は使用していませんが、Yahoo は Yahoo であり、少なくともある程度の品質を保証する必要があります。ただし、それらは PUT および DELETE リクエストをカバーしていないようです。
また、curl_exec()およびその他へのユーザー寄稿ノートには、多くの優れた情報が含まれています。
そこには複数の REST フレームワークがあります。PHP 用の Slim mini Framework を検討することを強くお勧めします。他のリストは次の
とおりです。