cURL POST リクエストで配列を適切に送信するにはどうすればよいですか?

Susan Sarandon
リリース: 2024-11-02 01:59:30
オリジナル
614 人が閲覧しました

How to Properly Submit Arrays in cURL POST Requests?

cURL POST リクエストでの配列のサポート

このクエリでは、ユーザーは cURL POST リクエスト内で配列を利用する方法についてのガイダンスを求めています。提供されたコードで配列を使用する場合、最初の値のみが送信されます。提出されたコードを調査すると、次の懸念事項が特定されます:

<code class="php">//extract data from the post
extract($_POST);

//set POST variables
$url = 'http://api.example.com/api';
$fields = array(
            'username' => "annonymous",
            'api_key' => urlencode("1234"),
            'images[]' => urlencode(base64_encode('image1')),
            'images[]' => urlencode(base64_encode('image2'))
        );

//url-ify the data for the POST
foreach($fields as $key => $value) { $fields_string .= $key.'='.$value.'&amp;'; }
rtrim($fields_string, '&amp;');

//open connection
$ch = curl_init();

//set the url, number of POST vars, POST data
curl_setopt($ch,CURLOPT_URL, $url);
curl_setopt($ch,CURLOPT_POST, count($fields));
curl_setopt($ch,CURLOPT_POSTFIELDS, $fields_string);

//execute post
$result = curl_exec($ch);
echo $result;

//close connection
curl_close($ch);</code>
ログイン後にコピー

配列構造が正しくありません:

主な問題は、配列構造が正しくないことにあります:

<code class="php">'images[]' => urlencode(base64_encode('image1')),
'images[]' => urlencode(base64_encode('image2'))</code>
ログイン後にコピー

このアプローチでは、PHP で配列は作成されません。代わりに、各キー「images[]」が前のキーを上書きします。

正しい配列構造 (http_build_query を使用):

配列を正しく構築するには、 http_build_query 関数:

<code class="php">$fields = array(
            'username' => "annonymous",
            'api_key' => urlencode("1234"),
            'images' => array(
                 urlencode(base64_encode('image1')),
                 urlencode(base64_encode('image2'))
            )
        );
$fields_string = http_build_query($fields);</code>
ログイン後にコピー

この変更により、$fields_string は 'images' キーの複数の値を持つ配列を正しく表すようになります。

改訂されたコード:

これらの調整を組み込むと、改訂されたコードは次のようになります。

<code class="php">//extract data from the post
extract($_POST);

//set POST variables
$url = 'http://api.example.com/api';
$fields = array(
            'username' => "annonymous",
            'api_key' => urlencode("1234"),
            'images' => array(
                 urlencode(base64_encode('image1')),
                 urlencode(base64_encode('image2'))
            )
        );

//url-ify the data for the POST
$fields_string = http_build_query($fields);

//open connection
$ch = curl_init();

//set the url, number of POST vars, POST data
curl_setopt($ch,CURLOPT_URL, $url);
curl_setopt($ch,CURLOPT_POST, 1);
curl_setopt($ch,CURLOPT_POSTFIELDS, $fields_string);

//execute post
$result = curl_exec($ch);
echo $result;

//close connection
curl_close($ch);</code>
ログイン後にコピー

これらの変更を実装することにより、cURL POST リクエストでの配列のサポートが効果的に実現され、すべての値が確実に送信されるようになります。サーバーは意図したとおりです。

以上がcURL POST リクエストで配列を適切に送信するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!