Web 開発では、HTTP リクエストの送信は非常に重要なタスクです。 API を通じてデータを取得する場合でも、サードパーティのサービスと通信する場合でも、データ転送には HTTP リクエストを使用する必要があります。 PHP では、curl ライブラリを使用して HTTP リクエストを送信できます。この記事では、curl ライブラリの使い方について詳しく紹介します。
1. Curl ライブラリの紹介
curl ライブラリはファイル転送に使用されるライブラリであり、複数のプロトコルをサポートしています。 HTTP、HTTPS、FTP などの一般的なプロトコルをサポートするだけでなく、SMTP や POP3 などの電子メール プロトコル、SCP や SFTP などのファイル転送プロトコルもサポートします。 CURL ライブラリは、サードパーティ サービスとのデータ対話を実現する HTTP クライアントを迅速に開発するのに役立つ非常に強力なツールです。
2.curl ライブラリの基本的な使い方
curl ライブラリには多くの関数が用意されていますが、ここではよく使われる関数のみを紹介します。
curl ライブラリを使用した GET リクエストの送信は非常に簡単で、curl_init() を呼び出してcurl リソースを作成し、設定するだけです。 URL とその他のパラメータ。以下に例を示します。
$url = 'http://example.com/api/getdata'; $curl = curl_init($url); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); $result = curl_exec($curl); curl_close($curl);
上記のコードは、curl_init() 関数を使用して、curl リソースを作成し、要求された URL を設定します。次に、curl_setopt() 関数を使用して CURLOPT_RETURNTRANSFER パラメータを設定します。これは、HTTP 応答が画面に表示されるのではなく変数に直接出力されることを示します。最後に、curl_exec() 関数が呼び出され、結果が保存され、実行後、curl_close() を使用して、curl リソースが閉じられます。
GET リクエストに加えて、curl ライブラリを使用して POST リクエストを送信することも非常に簡単です。 curl_setopt() 関数を呼び出すときに CURLOPT_POST パラメータを 1 に設定し、curl_setopt() を使用して CURLOPT_POSTFIELDS を設定して POST データを設定するだけです。
以下は例です:
$url = 'http://example.com/api/postdata'; $data = array( 'name' => 'John', 'email' => 'john@example.com', 'message' => 'Hello World!' ); $curl = curl_init($url); curl_setopt($curl, CURLOPT_POST, 1); curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($data)); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); $result = curl_exec($curl); curl_close($curl);
上記のコードは http_build_query() 関数を使用して POST データを URL エンコードされたデータに変換し、CURLOPT_POST パラメーターと CURLOPT_POSTFIELDS パラメーターを設定します。
実際のアプリケーションでは、データを JSON 形式でサーバーに送信する必要がある場合があります。これは、curl ライブラリを使用して簡単に実現できます。 CURLOPT_HTTPHEADER パラメーターを設定してリクエスト ヘッダー情報を指定し、JSON データをリクエスト本文として送信するだけです。
以下は例です。
$url = 'http://example.com/api/sendjson'; $data = array( 'name' => 'John', 'email' => 'john@example.com', 'message' => 'Hello World!' ); $json = json_encode($data); $curl = curl_init($url); curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "POST"); curl_setopt($curl, CURLOPT_POSTFIELDS, $json); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); curl_setopt($curl, CURLOPT_HTTPHEADER, array( 'Content-Type: application/json', 'Content-Length: ' . strlen($json)) ); $result = curl_exec($curl); curl_close($curl);
上記のコードは、json_encode() 関数を呼び出して連想配列を JSON 形式のデータに変換し、Content-Type や Content- などのリクエスト ヘッダーを設定します。長さの情報。
3.curl ライブラリの高度な使用法
curl ライブラリは、HTTP リクエストを送信する基本機能を提供するだけでなく、リクエスト プロセスをより適切に制御するのに役立つ多くの高度な機能も提供します。よく使用される高度な機能をいくつか紹介します。
プロキシ サーバー経由でネットワーク リソースにアクセスする必要がある場合があります。また、curl ライブラリを使用してプロキシ サーバーをセットアップするのも簡単です。 CURLOPT_PROXY パラメータを設定するだけです。
次に例を示します。
$url = 'http://example.com/api/getdata'; $curl = curl_init($url); curl_setopt($curl, CURLOPT_PROXY, 'http://proxy.example.com:8080'); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); $result = curl_exec($curl); curl_close($curl);
上記のコードは、curl_setopt() 関数を呼び出して CURLOPT_PROXY パラメータを設定し、プロキシ サーバーのアドレスとポートを指定します。
ネットワーク要求により、ネットワークの遅延やサーバーの応答時間が長いため、プログラムの実行時間が長すぎる場合があります。これを避けるために、タイムアウトを設定できます。タイムアウトは、curl ライブラリを使用して簡単に設定できます。CURLOPT_CONNECTTIMEOUT および CURLOPT_TIMEOUT パラメータを設定するだけです。
以下は例です。
$url = 'http://example.com/api/getdata'; $curl = curl_init($url); curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 10); curl_setopt($curl, CURLOPT_TIMEOUT, 30); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); $result = curl_exec($curl); curl_close($curl);
上記のコードは、それぞれ接続タイムアウトと要求タイムアウト時間を表す CURLOPT_CONNECTTIMEOUT パラメーターと CURLOPT_TIMEOUT パラメーターを設定します。
HTTPS プロトコルを使用してサーバーと通信する場合、サーバーを認証する必要があります。認証しないと、通信は確立されません。 SSL 検証は、curl ライブラリを使用すると非常に便利で、CURLOPT_SSL_VERIFYPEER パラメータと CURLOPT_SSL_VERIFYHOST パラメータを設定するだけで済みます。
次は例です。
$url = 'https://example.com/api/getdata'; $curl = curl_init($url); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, true); curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 2); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); $result = curl_exec($curl); curl_close($curl);
上記のコードは、CURLOPT_SSL_VERIFYPEER パラメーターと CURLOPT_SSL_VERIFYHOST パラメーターを設定します。これらのパラメーターは、サーバーを認証するかどうか、およびホスト名が証明書と一致するかどうかを検証するかどうかをそれぞれ示します。
4. 概要
この記事では、GET リクエスト、POST リクエスト、JSON データの送信、エージェントの設定、およびタイムアウトの設定やSSL認証の設定など。 CURL ライブラリを使用すると、HTTP クライアントをより簡単に実装できるため、サードパーティ サービスとのデータ対話機能を実現できます。
以上がPHP は、curl ライブラリを使用して HTTP リクエストを送信しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。