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.'&'; } 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>
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!