首页  >  文章  >  后端开发  >  如何在 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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn