在 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.'&'; } rtrim($fields_string, '&'); //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中文网其他相关文章!