ホームページ  >  記事  >  バックエンド開発  >  PHP は、curl POST リクエストを開始するときに配列を渡します

PHP は、curl POST リクエストを開始するときに配列を渡します

WBOY
WBOYオリジナル
2016-06-20 12:26:402102ブラウズ

PHP のcurlを使用すると、HTTP外部リクエストを開始できますが、POSTリクエストを開始する場合、curlレベルからは、いわゆる配列の概念はなく、配列を直接渡すことはできません。データを送信するためのより一般的な形式は、実際にはキーと値のペアです。

したがって、まず配列を渡す必要がある理由を知る必要があります。

HTTP プロトコルは、HTTP リクエストの 3 つの部分 (ステータス行、リクエスト ヘッダー、メッセージ本文) を指定します。実際には、メッセージ本文に指定された形式はありません。一般的に使用されるいくつかのリクエスト ヘッダーの Content-Type は

application/x-www-form-urlencodedmultipart/form-dataapplication/jsontext/xml

です。したがって、質問に対する答えはデータ型によって異なります。どのような種類のリクエストを送信する必要があるか。

一般的なcurl POSTリクエストは次のとおりです:

curl -X POST --data 'params[]=check1&params[]=check2' 'http://jayxhj.com/test/curl.php'

上記のリクエストは、application/x - のContent-Typeを送信します。 www-form-urlencoded リクエストのリクエスト本文は params[]=check1¶ms[]=check2 で、サーバー側では $_POST を使用して取得するだけです。

次に、curl に戻ります。CURLOPT_POSTFIELDS の VALUE オプションをキー/値ペアに設定するだけで、配列をサーバーに渡すことができます。文字列であり、$ _POST によって直接使用されます。

<?php$curl = curl_init();curl_setopt($curl, CURLOPT_URL, 'http://jayxhj.com/test/curl.php');curl_setopt($curl, CURLOPT_HEADER, 0);curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);$array = [    'jayxhj',    'pt'];$str   = http_build_query($array);curl_setopt($curl, CURLOPT_POSTFIELDS, $str);$data = curl_exec($curl);curl_close($curl);var_dump($data);

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