ホームページ >バックエンド開発 >PHPチュートリアル >Curl を使用して PHP でリクエスト (GET リクエストと POST リクエスト) を送信する

Curl を使用して PHP でリクエスト (GET リクエストと POST リクエスト) を送信する

高洛峰
高洛峰オリジナル
2017-03-22 10:20:332101ブラウズ

この記事では、PHP でリクエスト (GET リクエストと POST リクエスト) を送信するためのcurlの使い方を主に紹介します。編集者はそれが非常に優れていると考えたので、参考として共有します。エディターをフォローして見てみましょう

CURL を使用してリクエストを送信する基本プロセス

CURL の PHP 拡張機能を使用して HTTP リクエストの送信を完了するには、通常次の手順があります:

1. 接続を初期化します。ハンドル;

2. CURL オプションを設定します。

4. VURL 接続ハンドルを解放します。

次のプログラムの一部は、CURL を使用して HTTP を送信する典型的なプロセスです

// 1. 初始化
 $ch = curl_init();
 // 2. 设置选项,包括URL
 curl_setopt($ch,CURLOPT_URL,"http://www.devdo.net");
 curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
 curl_setopt($ch,CURLOPT_HEADER,0);
 // 3. 执行并获取HTML文档内容
 $output = curl_exec($ch);
 if($output === FALSE ){
 echo "CURL Error:".curl_error($ch);
 }
 // 4. 释放curl句柄
 curl_close($ch);


上記のコードでは 4 つの関数が使用されています


curl_init() とcurl_close() は、 CURL 接続はそれぞれ CURL 接続は比較的単純です。
  • curl_exec() は CURL リクエストを実行します。エラーが発生しない場合、関数は対応する URL によって返されたデータを返し、エラーが発生した場合は FALSE を返します。出力が FALSE であるかどうかを判断するために等号が使用されることに注意してください。これは、空の文字列を返すかエラーを返すかを区別するためです。
  • CURL 関数ライブラリで最も重要な関数は、curl_setopt() です。これは、CURL 関数ライブラリで定義されたオプションを設定することで HTTP リクエストをカスタマイズできます。上記のコード スニペットでは 3 つの重要なオプションが使用されています:
  • ①CURLOPT_URL は要求された URL を指定します。

②CURLOPT_RETURNTRANSFER は 1 に設定され、後で実行されるcurl_exec 関数の戻り値が、URL ではなく URL の戻り文字列であることを示します。戻り文字 文字列は標準出力に送られ、TRUE を返します。

③CURLLOPT_HEADER は 0 に設定され、HTTP ヘッダー情報が返されないことを示します。

CURL には多くのオプションがあります。PHP の公式 Web サイト (http://www.php.cn/) にアクセスして、CURL でサポートされているすべてのオプションのリストを表示します。

CURL リクエストの出力情報を取得する

curl_exec() 関数が実行された後、curl_getinfo() 関数を使用して CURL リクエスト出力の関連情報を取得できます。サンプルコードは次のとおりです。 :

curl_exec($ch);
$info = curl_getinfo($sh);
echo ' 获取 '.$info['url'].'耗时'.$info['total_time'].'秒';


上記 コードでは、curl_getinfo は次のデータを含む連想配列を返します:

url: ネットワーク アドレス。
  • content_type: コンテンツのエンコーディング。
  • http_code: HTTP ステータス コード。
  • header_size: ヘッダーのサイズ。
  • request_size: リクエストのサイズ。
  • filetime: ファイルが作成された時刻。
  • ssl_verify_result: SSL検証結果。
  • redirect_count: ジャンプ数。
  • total_time: 費やした合計時間。
  • namelookup_time: DNS クエリには時間がかかります。
  • connect_time: 接続の待機に費やした時間。
  • pretransfer_time: 転送前の準備にかかる時間。
  • size_uplpad: アップロードされたデータのサイズ。
  • size_download: ダウンロードされたデータのサイズ。
  • speed_download: ダウンロード速度。
  • speed_upload: アップロード速度。
  • download_content_length: ダウンロード コンテンツの長さ。
  • upload_content_length: アップロードされたコンテンツの長さ。
  • starttransfer_time: 転送を開始するタイムテーブル。
  • redirect_time: リダイレクト時間。
  • curl_getinfo() 関数にはオプションのパラメーター $opt もあり、これを使用して、上記のフィールドに対応するいくつかの定数を設定できます。2 番目のパラメーターが設定されている場合、指定された情報のみが返されます。たとえば、$opt が CURLINFO_TOTAL_TIME に設定されている場合、curl_getinfo() 関数は total_time のみを返します。これは、特定の送信情報のみに注意する必要がある場合に、$opt パラメータを設定することが意味があります。 。

CURL を使用して GET リクエストを送信する

CURL を使用して GET リクエストを送信する方法は、正しい形式で URL を組み立てることです。リクエストアドレスとGETデータは「?」で区切られ、次にGET変数の名前と値が「=」で区切られ、それぞれのGET名と値が「&」で結ばれます。 PHP は、GET リクエストとデータ部分を組み立てるために特に使用される関数 http_build_query を提供します。この関数は連想配列を受け取り、関連付けられたデータで記述された GET リクエスト文字列を返します。この関数を使用して、CURL が HTTP リクエストを送信する一般的なプロセスと組み合わせて、GET リクエストを送信する関数 doCurlGetRequest を閉じました。具体的なコードは次のとおりです:

/**
 *@desc 封闭curl的调用接口,get的请求方式。
*/
function doCurlGetRequest($url,$data,$timeout = 5){
 if($curl == "" || $timeout <= 0){
 return false;
 }
 $url = $url.&#39;?&#39;.http_bulid_query($data);
 $con = curl_init((string)$url);
 curl_setopt($con, CURLOPT_HEADER, false);
 curl_setopt($con, CURLOPT_RETURNTRANSFER,true);
 curl_setopt($con, CURLOPT_TIMEOUT, (int)$timeout);
 
 return curl_exec($con);
}


この関数は、組み立てられた GET パラメータを結合します。 http_build_query を使用 URL はcurl_init 関数に渡され、CURL を使用して HTTP リクエストが送信されます。

CURL を使用して POST リクエストを送信します

CURL が提供するオプション CURLOPT_POSTFIELDS を使用して、このオプションを POST 文字列データに設定して、リクエストを本文に含めることができます。同様に、POST リクエストを送信する関数 doCurlPostRequest を実装しました。コードは次のとおりです。

/**
** @desc 封装 curl 的调用接口,post的请求方式
**/
function doCurlPostRequest($url,$requestString,$timeout = 5){
 if($url == &#39;&#39; || $requestString == &#39;&#39; || $timeout <=0){
 return false;
 }
 $con = curl_init((string)$url);
 curl_setopt($con, CURLOPT_HEADER, false);
 curl_setopt($con, CURLOPT_POSTFIELDS, $requestString);
 curl_setopt($con, CURLOPT_POST,true);
 curl_setopt($con, CURLOPT_RETURNTRANSFER,true);
 curl_setopt($con, CURLOPT_TIMEOUT,(int)$timeout);
 return curl_exec($con); 
}


上記のコードで CURLOPT_POSTFIELDS を設定することに加えて、CURL_POST も true に設定して、このリクエストが送信されることを示します。は POST リクエストです。 GET データは POST リクエストで送信することもできます。必要なのは、GET リクエスト データを URL に組み込むことだけです。

以上がこの記事の全内容です。皆さんの学習に役立つことを願っています。また、皆さんも PHP 中国語 Web サイトをサポートしていただければ幸いです。

カールを使用して PHP でリクエスト (GET リクエストと POST リクエスト) を送信することに関するその他の記事については、PHP 中国語 Web サイトに注目してください。

関連記事:

PHPがcurl関数を使ってgetリクエストを開始する際のURLのパラメータ問題

PHPがcurl関数を使ってPostリクエストを送信する際の注意点の詳細例

PHP開発スキル(8) - CURLリクエストコード詳細

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。