(CURLOPT_POSTFIELDS を介して) cURL オプションとして POST されるデータの配列を割り当てる場合、最初にそのデータを urlencode する必要がありますか?それとも処理されますか?
20499 次
5 に答える
31
の C 実装はcurl_setopt
、テキストを URL エンコードしていないようです。ただし、PHP5 では、関数はURL エンコードされhttp_build_query
た配列のクエリ文字列表現を返します。
使用例
$curl_parameters = array(
'param1' => $param1,
'param2' => $param2
);
$curl_options = array(
CURLOPT_URL => "http://localhost/service",
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => http_build_query( $curl_parameters ),
CURLOPT_HTTP_VERSION => 1.0,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HEADER => false
);
$curl = curl_init();
curl_setopt_array( $curl, $curl_options );
$result = curl_exec( $curl );
curl_close( $curl );
于 2009-02-22T03:18:38.580 に答える
14
最初に urlencode する必要はありません。ただし、配列を渡すと cURL がそれを として送信することを理解することが重要ですmultipart/form-data
。これは、(あなたも cURL も) urlencoded を取得する必要がない理由を説明しており、ファイルをアップロードする場合は配列を使用する必要があります。 . 最初にhttp_build_query()
(そして文字列として送信すると) として扱われapplication/x-www-form-urlencoded
ます。
于 2009-02-22T04:10:48.610 に答える
1
CURLOPT_POSTFIELDSに配列を使用する場合の問題の1つは、空の値を持つ名前と値のペアを使用できないことです。
于 2009-02-22T13:56:01.090 に答える
0
POSTデータは(GETのように)URLに追加されないため、URLエンコードする必要はありません。
于 2009-02-22T04:12:04.053 に答える