cURL は、PHP の非常に強力な機能です。ユーザーのログインを模倣したり、PHP Cookie を送信したり、その他の操作を実行したりできます。
備考: 使用します。 curl_init 関数を使用するには、この PHP 拡張機能をオンにする必要があります。
1. php.ini を開き、extension=php_curl.dll を有効にします
2. php.ini の extension_dir 値がどのディレクトリにあるかを確認し、php_curl.dll が存在するかどうかを確認します。存在しない場合は、php_curl.dll をダウンロードし、php ディレクトリ内の libeay32.dll と ssleay32.dll を c:/ にコピーします。ウィンドウズ/システム32 。
最近、Tencent Open Platform の API インターフェイスを学習する過程で、非常に強力な PHP ライブラリ cURL を発見しました。これは、URL 構文を使用してコマンド ライン モードで動作するファイル転送ツールです。この記事はブロガーによって海外のブログから直接翻訳されたものです。元のアドレスは http://codular.com/curl-with-php です。この記事は非常に基本的なものですが、構成が非常に明確で、知識が比較的体系的で包括的であるため、ひっくり返して保存しました。 (以下のタイトルの一部はブロガーによる余計なものなので、ほとんど無視していただいても問題ありません。)
1 定義: cURL とは
cURL は、幅広いプロトコル間でのデータ転送を可能にし、非常に強力なシステムです。 API インタラクションや oAuth など、Web サイト間でデータを送信するために広く使用されています。 cURL は、基本的な HTTP リクエストから、より複雑な FTP アップロードや、閉じられた HTTPS Web サイトの対話型認証に至るまで、アプリケーションの範囲においてほぼ全能です。 GET リクエストと POST リクエストの送信と返されたレスポンスの処理の簡単な違いと、いくつかの重要なパラメータの説明を見てみましょう。
cURL リクエストで何かを行う前に、まず cURL のインスタンスを初期化する必要があります。これは、cURL リソースを返すcurl_init() 関数を呼び出すことで実現できます。この関数は、送信するリクエスト URL をパラメータの 1 つとして受け取ります。この記事では、このステップを最初に実行しません。次のプロセスで別の方法で実装できます。
2 注: いくつかのコア設定
cURL リソースを取得したら、いくつかの構成を開始できます。要約した主要な設定の一部を以下に示します。
CURLOPT_RETURNTRANSFER - 応答を画面に出力する代わりに文字列として返します
CURLOPT_CONNECTTIMEOUT - 接続タイムアウト時間
CURLOPT_TIMEOUT - cURL 実行タイムアウト
CURLOPT_USERAGENT - リクエストに使用される Useragent 文字列
CURLOPT_URL - リクエストを送信する URL オブジェクト
CURLOPT_POST - POST メソッドでリクエストを送信します
CURLOPT_POSTFIELDS - POST 送信されたリクエストの配列データ
3 構成を作成します
curl_setopt() メソッドを使用して構成を作成できます。このメソッドは、cURL リソース、設定、および対応する値の設定という 3 つのパラメーターを受け取ります。したがって、送信するリクエスト URL を以下のように設定できます。
コードは次のとおりです | コードをコピー |
$curl =curl_init(); |
上に示したように、cURL リソースを取得するときに、パラメーターを渡すことで URL を設定できます。
コードは次のとおりです | コードをコピー |
$curl =curl_init('http://www.hzhuti.com'); |
もちろん、変数名と変数値を含む配列をcurl_setopt_array()関数に渡すことで、一度に複数の構成を作成することもできます。
コードは次のとおりです | コードをコピー |
$curl =curl_init(); |
4 実行リクエスト:curl_exec()
すべてのオプションが構成され、リクエストを送信する準備ができたら、curl_exec() を呼び出してこの cURL リクエストを実行できます。この関数は 3 つの異なる状況を返します:
コードは次のとおりです | コードをコピー |
$result =curl_exec($curl); |
この時点で、$result にはすでにページの応答が含まれています。これは、JSON、文字列、または完全な Web サイトの HTML である可能性があります。
5 クローズリクエスト:curl_close()
リクエストを送信し、対応する戻り結果を取得した後、cURL リクエストを閉じてシステム リソースの一部を解放する必要があります。 curl_close() メソッドを呼び出すことにより、パラメータとしてリソースを必要とする他の関数と同様に、リソースを簡単に解放できます。
6 GET リクエスト
GET リクエストはデフォルトのリクエストメソッドであり、非常に簡単に使用できます。これまでの例はほぼすべて GET リクエストでした。リクエストにパラメーターを追加する場合は、http://testcURL.com/?item1=value&item2=value2 のように、これらのパラメーターをクエリ文字列として URL アドレスに追加できます。
したがって、次の例を通じて上記の URL に GET リクエストを送信し、対応する結果を返すことができます。
コードは次のとおりです | コードをコピー |
// cURL リソースを取得します |
7件の投稿リクエスト
GET リクエストと POST リクエストの構文の唯一の違いは、データを送信する場合は追加の設定があることです。 CURLOPT_POST を true に設定し、CURLOPT_POSTFIELDS を設定して配列を含むデータを送信します。
したがって、上記の GET リクエストを POST リクエストに変換すると、次のコードを使用できます:
コードは次のとおりです | コードをコピー |
// cURL リソースを取得します |
コードは次のとおりです | コードをコピー |
関数 _https_curl_post($url, $vars) | curl_error() - 文字列エラーメッセージを返します (リクエストが正常に返された場合、その値は空です)
たとえば、次の例を使用できます:
コードは次のとおりです
コードをコピー
if(!curl_exec($curl)){
Die('エラー: "' .curl_error($curl) . '" - コード: ' .curl_errno($curl));HTML ページ全体を返すのではなく、400 を超える HTTP 応答コードでエラーを生成したい場合は、CURLOPT_FAILONERROR を true に設定できます。 cURL は巨大であり、非常に多くの可能性があります。一部の Web サイトでは、API インターフェイスを使用するときに、特別なユーザー エージェントを送信する必要がある場合があります。これらはすべて注意が必要です。 cURL リクエストについてまだ知りたい場合は、Instagram で oAuth を試してみてはいかがでしょうか? | |
| http://www.bkjia.com/PHPjc/632735.html