ホームページ  >  記事  >  バックエンド開発  >  cURL POST リクエストで配列を適切に送信するにはどうすればよいですか?

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

Susan Sarandon
Susan Sarandonオリジナル
2024-11-02 01:59:30615ブラウズ

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 サイトの他の関連記事を参照してください。

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