Maison  >  Article  >  développement back-end  >  Comment soumettre correctement des tableaux dans les requêtes cURL POST ?

Comment soumettre correctement des tableaux dans les requêtes cURL POST ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-02 01:59:30621parcourir

How to Properly Submit Arrays in cURL POST Requests?

Prise en charge des tableaux dans les requêtes cURL POST

Dans cette requête, l'utilisateur recherche des conseils sur la façon d'utiliser les tableaux dans les requêtes cURL POST. Lors de l'utilisation de tableaux dans le code fourni, seule la première valeur est soumise. En explorant le code soumis, les problèmes suivants sont identifiés :

<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>

Structure de tableau incorrecte :

Le principal problème réside dans la structure de tableau incorrecte à :

<code class="php">'images[]' => urlencode(base64_encode('image1')),
'images[]' => urlencode(base64_encode('image2'))</code>

Cette approche ne créera pas de tableau en PHP ; à la place, chaque clé 'images[]' écrasera la précédente.

Corriger la structure du tableau (à l'aide de http_build_query) :

Pour construire un tableau correctement, pensez à utiliser le Fonction 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>

Avec cette modification, $fields_string représentera désormais correctement un tableau avec plusieurs valeurs pour la clé 'images'.

Code révisé :

En intégrant ces ajustements, le code révisé apparaîtrait comme suit :

<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>

En implémentant ces modifications, la prise en charge des tableaux dans les requêtes cURL POST est effectivement obtenue, garantissant que toutes les valeurs sont transmises à le serveur comme prévu.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn