ホームページ > バックエンド開発 > PHPチュートリアル > PHP_PHP チュートリアルの cURL リクエストとサンプル学習ノート

PHP_PHP チュートリアルの cURL リクエストとサンプル学習ノート

WBOY
リリース: 2016-07-13 10:49:09
オリジナル
1229 人が閲覧しました

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_setopt($curl, CURLOPT_URL, 'http://www.bKjia.c0m');

上に示したように、cURL リソースを取得するときに、パラメーターを渡すことで URL を設定できます。

コードは次のとおりです コードをコピー

$curl =curl_init('http://www.hzhuti.com');

もちろん、変数名と変数値を含む配列をcurl_setopt_array()関数に渡すことで、一度に複数の構成を作成することもできます。

コードは次のとおりです コードをコピー

$curl =curl_init();
curl_setopt_array($curl, array(
CURLOPT_RETURTRANSFER => 1,
CURLOPT_URL => 'http://www.bKjia.c0m'
));

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 リソースを取得します
$curl =curl_init();
// いくつかのオプションを設定します - ここでもユーザーエージェントを渡します
curl_setopt_array($curl, array(
CURLOPT_RETURTRANSFER => 1,
CURLOPT_URL => 'http://testcURL.com/?item1=value&item2=value2',
CURLOPT_USERAGENT => 'コジュラー サンプル cURL リクエスト'
));
// リクエストを送信し、レスポンスを $resp に保存します
$resp =curl_exec($curl);
// いくつかのリソースをクリアするためにリクエストを閉じます
curl_close($curl);

7件の投稿リクエスト

GET リクエストと POST リクエストの構文の唯一の違いは、データを送信する場合は追加の設定があることです。 CURLOPT_POST を true に設定し、CURLOPT_POSTFIELDS を設定して配列を含むデータを送信します。

したがって、上記の GET リクエストを POST リクエストに変換すると、次のコードを使用できます:

この時点で、次のような POST リクエストが作成されています。これは、上記の GET リクエストと同じ効果を生成し、データをスクリプトに返して、自由に使用できるようにします。

httpsリクエストの開始例

コードは次のとおりです コードをコピー

// cURL リソースを取得します
$curl =curl_init();
// いくつかのオプションを設定します - ここでもユーザーエージェントを渡します
curl_setopt_array($curl, array(
CURLOPT_RETURTRANSFER => 1,
CURLOPT_URL => 'http://www.bKjia.c0m',
CURLOPT_USERAGENT => 'コジュラー サンプル cURL リクエスト',
CURLOPT_POST => 1,
CURLOPT_POSTFIELDS => item1 => '値',
項目2 => '値2'
)
));
// リクエストを送信し、レスポンスを $resp に保存します
$resp =curl_exec($curl);
// いくつかのリソースをクリアするためにリクエストを閉じます
curl_close($curl);

curl_error() - 文字列エラーメッセージを返します (リクエストが正常に返された場合、その値は空です) curl_errno() - cURL エラーの数を返すと、エラー コードを含むページを表示できます。
コードは次のとおりです コードをコピー

関数 _https_curl_post($url, $vars)
{
foreach($vars as $key=>$value)
{
$fields_string .= $key.'='.$value.'&' ; }
$fields_string = substr($fields_string,0,(strlen($fields_string)-1)); $ch =curl_init(); curl_setopt($ch, CURLOPT_URL,$url); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); // この行は https で動作します
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); curl_setopt($ch, CURLOPT_POST, count($vars) ); curl_setopt($ch, CURLOPT_POSTFIELDS, $fields_string); $data = カール_exec($ch); $データ = カール_exec($ch); カール_クローズ($ch);
If ($data)
{
$data を返します。 }
それ以外
{
false を返します
}
}





8 エラー


間違いは嫌いですが、cURL を使用するときに発生する可能性のある状況に注意する必要があります。なぜなら、リクエストの送信先の Web サイトを最終的に制御することはできず、サイトの応答が期待どおりであることや、サイトが常に正常な状態であるという保証はないからです。

エラーを処理するために使用できる 2 つの関数を次に示します:

たとえば、次の例を使用できます:

コードは次のとおりです

コードをコピー


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



www.bkjia.com

tru​​ehttp://www.bkjia.com/PHPjc/632735.html技術記事

cURL は、PHP の非常に強力な機能で、ユーザーのログインを模倣したり、PHP Cookie やその他の操作を送信したりすることができます。
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート