通常の状況では、CURL を使用して POST データを送信する場合、次のように記述することに慣れています:
curl_setopt( $ch, CURLOPT_POSTFIELDS,$post_data);
しかし、この書き方はあまり役に立たない場合があり、サーバーから 500 エラーが返される可能性があります。しかし、Socket を使用してサーバーにデータを送信しようとすると、非常に正しい結果が得られます。
たとえば、サーバー上に次の PHP ファイルがあります:
<?php print_r($_SERVER);?>
詳細に注意を払わずに CURL を使用してサーバーにデータを送信すると、次のような結果が得られる可能性がありますが、これは理想的な結果ではありません:
[CONTENT_TYPE] => multipart/form-data; boundary=—————————-f924413ea122
しかし、$post_data の代わりに http_build_query($post_data) を使用して、この PHP スクリプトにデータを送信すると、上記とは異なる結果が得られます。これが私たちの理想的な結果です。
[CONTENT_TYPE] => application/x-www-form-urlencoded
上から見るのは難しくありません。この例では、CURL を使用し、パラメーターがデータである場合、データをサーバーに送信するときに、HTTP ヘッダーによって Content_type: application/x-www-form-urlencoded が送信されます。これは、通常の Web ページ