ホームページ  >  記事  >  バックエンド開発  >  PHPのcurlはそれほど複雑ではありません

PHPのcurlはそれほど複雑ではありません

WBOY
WBOYオリジナル
2016-06-13 12:14:53799ブラウズ

PHP のカールもそれほど複雑ではありません

多くの学生は (私を含めて) 初めてカールを使用したときに圧倒され、いくら見ても理解できませんでした。 10 分かけて私の紹介文を読んでください。将来的には PHP のカールを簡単に遊べるようになると思います

まず、curl コードを見てください (10 秒かかります。簡単に読んでください)。次に以下に進みます)

<span style="color: #008080;"> 1</span> <?<span style="color: #000000;">php </span><span style="color: #008080;"> 2</span> <span style="color: #800080;">$data</span> = "<soap:Envelope>[...]</soap:Envelope>"<span style="color: #000000;">; </span><span style="color: #008080;"> 3</span> <span style="color: #800080;">$tuCurl</span> =<span style="color: #000000;"> curl_init(); </span><span style="color: #008080;"> 4</span> curl_setopt(<span style="color: #800080;">$tuCurl</span>, CURLOPT_URL, "https://example.com/path/for/soap/url/"<span style="color: #000000;">); </span><span style="color: #008080;"> 5</span> curl_setopt(<span style="color: #800080;">$tuCurl</span>, CURLOPT_PORT , 443<span style="color: #000000;">); </span><span style="color: #008080;"> 6</span> curl_setopt(<span style="color: #800080;">$tuCurl</span>, CURLOPT_VERBOSE, 0<span style="color: #000000;">); </span><span style="color: #008080;"> 7</span> curl_setopt(<span style="color: #800080;">$tuCurl</span>, CURLOPT_HEADER, 0<span style="color: #000000;">); </span><span style="color: #008080;"> 8</span> curl_setopt(<span style="color: #800080;">$tuCurl</span>, CURLOPT_SSLVERSION, 3<span style="color: #000000;">); </span><span style="color: #008080;"> 9</span> curl_setopt(<span style="color: #800080;">$tuCurl</span>, CURLOPT_SSLCERT, <span style="color: #008080;">getcwd</span>() . "/client.pem"<span style="color: #000000;">); </span><span style="color: #008080;">10</span> curl_setopt(<span style="color: #800080;">$tuCurl</span>, CURLOPT_SSLKEY, <span style="color: #008080;">getcwd</span>() . "/keyout.pem"<span style="color: #000000;">); </span><span style="color: #008080;">11</span> curl_setopt(<span style="color: #800080;">$tuCurl</span>, CURLOPT_CAINFO, <span style="color: #008080;">getcwd</span>() . "/ca.pem"<span style="color: #000000;">); </span><span style="color: #008080;">12</span> curl_setopt(<span style="color: #800080;">$tuCurl</span>, CURLOPT_POST, 1<span style="color: #000000;">); </span><span style="color: #008080;">13</span> curl_setopt(<span style="color: #800080;">$tuCurl</span>, CURLOPT_SSL_VERIFYPEER, 1<span style="color: #000000;">); </span><span style="color: #008080;">14</span> curl_setopt(<span style="color: #800080;">$tuCurl</span>, CURLOPT_RETURNTRANSFER, 1<span style="color: #000000;">); </span><span style="color: #008080;">15</span> curl_setopt(<span style="color: #800080;">$tuCurl</span>, CURLOPT_POSTFIELDS, <span style="color: #800080;">$data</span><span style="color: #000000;">); </span><span style="color: #008080;">16</span> curl_setopt(<span style="color: #800080;">$tuCurl</span>, CURLOPT_HTTPHEADER, <span style="color: #0000ff;">array</span>("Content-Type: text/xml","SOAPAction: \"/soap/action/query\"", "Content-length: ".<span style="color: #008080;">strlen</span>(<span style="color: #800080;">$data</span><span style="color: #000000;">))); </span><span style="color: #008080;">17</span> <span style="color: #008080;">18</span> <span style="color: #800080;">$tuData</span> = curl_exec(<span style="color: #800080;">$tuCurl</span><span style="color: #000000;">); </span><span style="color: #008080;">19</span> <span style="color: #0000ff;">if</span>(!curl_errno(<span style="color: #800080;">$tuCurl</span><span style="color: #000000;">)){ </span><span style="color: #008080;">20</span>   <span style="color: #800080;">$info</span> = curl_getinfo(<span style="color: #800080;">$tuCurl</span><span style="color: #000000;">); </span><span style="color: #008080;">21</span>   <span style="color: #0000ff;">echo</span> 'Took ' . <span style="color: #800080;">$info</span>['total_time'] . ' seconds to send a request to ' . <span style="color: #800080;">$info</span>['url'<span style="color: #000000;">]; </span><span style="color: #008080;">22</span> } <span style="color: #0000ff;">else</span><span style="color: #000000;"> { </span><span style="color: #008080;">23</span>   <span style="color: #0000ff;">echo</span> 'Curl error: ' . curl_error(<span style="color: #800080;">$tuCurl</span><span style="color: #000000;">); </span><span style="color: #008080;">24</span> <span style="color: #000000;">} </span><span style="color: #008080;">25</span> <span style="color: #008080;">26</span> curl_close(<span style="color: #800080;">$tuCurl</span><span style="color: #000000;">); </span><span style="color: #008080;">27</span> <span style="color: #0000ff;">echo</span> <span style="color: #800080;">$tuData</span><span style="color: #000000;">; </span><span style="color: #008080;">28</span> ?>

一体何をしているのですか?

この「高度な」使い方を学びたいですか?

まず、ほとんどの Web アドレスは http で始まることを知っておく必要があると思います。これは、データ送信に http (Hypertext Transfer Protocol HTTP-ハイパーテキスト転送プロトコル) を使用する必要があるためです。 . しかし、データの送信は、単に「Hello」をサーバーに送信するだけではなく、受信者が送信者の実際の意図を理解し、送信者が誰であるかを知るために、多くの追加情報を追加する必要があります。差出人が手紙の周りに封筒をかぶせるのと同じように、封筒には差出人に関するさまざまな情報が書かれ、情報が同時に受信者に送信されます。これらすべては最終的にメッセージと呼ばれるものに結合され、インターネット全体の基礎を形成しました。

Curl の仕事は、http プロトコルを通じてこれらのメッセージを送信することです (php の libcurl は現在 https、ftp、telnet、など。他のプロトコル)

次にコードを見てください。実際、コードは

  1. の 5 つのことだけを行っています。curl_init() は初期化します。 curl
  2. curl_setopt() 転送データとパラメータを設定
  3. curl_exec() 転送を実行し、戻りデータを取得
  4. curl_errono() はエラー コード
  5. を返しますcurl_close()はcurlを閉じます

GETとPOSTの使用方法は次のとおりですメソッド 任意のページからデータをキャプチャして送信します

<span style="color: #008080;"> 1</span> <?<span style="color: #000000;">php</span><span style="color: #008080;"> 2</span>     <span style="color: #008000;">//</span><span style="color: #008000;">初始化</span><span style="color: #008080;"> 3</span>     <span style="color: #800080;">$curl</span> =<span style="color: #000000;"> curl_init();</span><span style="color: #008080;"> 4</span>     <span style="color: #008000;">//</span><span style="color: #008000;">设置url</span><span style="color: #008080;"> 5</span>     curl_setopt(<span style="color: #800080;">$curl</span>, CURLOPT_URL, 'http://www.baidu.com'<span style="color: #000000;">);</span><span style="color: #008080;"> 6</span>     <span style="color: #008000;">//</span><span style="color: #008000;">设置返回获取的输出为文本流</span><span style="color: #008080;"> 7</span>     curl_setopt(<span style="color: #800080;">$curl</span>, CURLOPT_RETURNTRANSFER, <span style="color: #0000ff;">true</span><span style="color: #000000;">);</span><span style="color: #008080;"> 8</span>     <span style="color: #008000;">//</span><span style="color: #008000;">执行命令</span><span style="color: #008080;"> 9</span>     <span style="color: #800080;">$data</span> = curl_exec(<span style="color: #800080;">$curl</span><span style="color: #000000;">);</span><span style="color: #008080;">10</span>     <span style="color: #008000;">//</span><span style="color: #008000;">关闭URL请求</span><span style="color: #008080;">11</span>     curl_close(<span style="color: #800080;">$curl</span><span style="color: #000000;">);</span><span style="color: #008080;">12</span>     <span style="color: #008000;">//</span><span style="color: #008000;">显示获得的数据</span><span style="color: #008080;">13</span>     <span style="color: #008080;">print_r</span>(<span style="color: #800080;">$data</span><span style="color: #000000;">);</span><span style="color: #008080;">14</span> ?><span style="color: #008080;">15</span> <span style="color: #008080;">16</span> <?<span style="color: #000000;">php</span><span style="color: #008080;">17</span>     <span style="color: #008000;">//</span><span style="color: #008000;">初始化</span><span style="color: #008080;">18</span>     <span style="color: #800080;">$curl</span> =<span style="color: #000000;"> curl_init();</span><span style="color: #008080;">19</span>     <span style="color: #008000;">//</span><span style="color: #008000;">设置url</span><span style="color: #008080;">20</span>     curl_setopt(<span style="color: #800080;">$curl</span>, CURLOPT_URL, 'http://www.baidu.com'<span style="color: #000000;">);</span><span style="color: #008080;">21</span>     <span style="color: #008000;">//</span><span style="color: #008000;">设置返回获取的输出为文本流</span><span style="color: #008080;">22</span>     curl_setopt(<span style="color: #800080;">$curl</span>, CURLOPT_RETURNTRANSFER, <span style="color: #0000ff;">true</span><span style="color: #000000;">);</span><span style="color: #008080;">23</span>     <span style="color: #008000;">//</span><span style="color: #008000;">设置post方式提交</span><span style="color: #008080;">24</span>     curl_setopt(<span style="color: #800080;">$curl</span>, CURLOPT_POST, 1<span style="color: #000000;">);</span><span style="color: #008080;">25</span>     <span style="color: #008000;">//</span><span style="color: #008000;">设置post数据</span><span style="color: #008080;">26</span>     curl_setopt(<span style="color: #800080;">$curl</span>, CURLOPT_POSTFIELDS, <span style="color: #0000ff;">array</span>("data"=>"value"<span style="color: #000000;">);</span><span style="color: #008080;">27</span>     <span style="color: #008000;">//</span><span style="color: #008000;">执行命令</span><span style="color: #008080;">28</span>     <span style="color: #800080;">$data</span> = curl_exec(<span style="color: #800080;">$curl</span><span style="color: #000000;">);</span><span style="color: #008080;">29</span>     <span style="color: #008000;">//</span><span style="color: #008000;">关闭URL请求</span><span style="color: #008080;">30</span>     curl_close(<span style="color: #800080;">$curl</span><span style="color: #000000;">);</span><span style="color: #008080;">31</span>     <span style="color: #008000;">//</span><span style="color: #008000;">打印数据</span><span style="color: #008080;">32</span>     <span style="color: #008080;">print_r</span>(<span style="color: #800080;">$data</span><span style="color: #000000;">);</span><span style="color: #008080;">33</span> ?>

興味のある学生は、公式の PHP ドキュメントを参照して、curl の使用方法を詳しく学ぶこともできます

2階Ronaldo7
baiduにデータを投稿できますか? ???
Re: ダークブルーシックル
@Ronaldo7、例を教えてください
1Fアンドゥ
ディープ・ブルーの右手との関係は何ですか
Re: ダークBlue Scythe
@Andu、彼はゲーム エンジンに焦点を当てたマスターであるはずだったことを正確に覚えています
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。