271

私は PHP で REST Web サービス クライアントを構築しています。現在、curl を使用してサービスへのリクエストを行っています。

curl を使用して認証済み (http 基本) リクエストを作成するにはどうすればよいですか? 自分でヘッダーを追加する必要がありますか?

4

11 に答える 11

449

あなたはこれを求めている:

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);
于 2010-01-26T15:45:41.030 に答える
149

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);
于 2014-03-12T16:43:18.903 に答える
7

SOAP とは異なり、REST は標準化されたプロトコルではないため、「REST クライアント」を持つのは少し難しいです。ただし、ほとんどの RESTful サービスは基になるプロトコルとして HTTP を使用するため、任意の HTTP ライブラリを使用できるはずです。cURL に加えて、PHP には PEAR 経由で次の機能があります。

HTTP_Request2

置き換えた

HTTP_リクエスト

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);
于 2010-01-27T03:24:11.830 に答える
4

Yahoo には、PHP を使用して REST サービスを呼び出すためのチュートリアルがあります。

Yahoo! PHP を使用した Web サービス REST 呼び出し

私自身は使用していませんが、Yahoo は Yahoo であり、少なくともある程度の品質を保証する必要があります。ただし、それらは PUT および DELETE リクエストをカバーしていないようです。

また、curl_exec()およびその他へのユーザー寄稿ノートには、多くの優れた情報が含まれています。

于 2010-01-26T15:46:06.687 に答える
-7

そこには複数の REST フレームワークがあります。PHP 用の Slim mini Framework を検討することを強くお勧めします。他のリストは次の
とおりです。

于 2015-08-30T07:27:52.393 に答える