Unterstützen von Arrays in cURL-POST-Anfragen
In dieser Abfrage sucht der Benutzer nach Anleitungen zur Verwendung von Arrays in cURL-POST-Anfragen. Bei der Verwendung von Arrays im bereitgestellten Code wird nur der erste Wert übermittelt. Bei der Untersuchung des übermittelten Codes wurden die folgenden Bedenken festgestellt:
<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>
Falsche Array-Struktur:
Das Hauptproblem liegt in der falschen Array-Struktur bei:
<code class="php">'images[]' => urlencode(base64_encode('image1')), 'images[]' => urlencode(base64_encode('image2'))</code>
Dieser Ansatz erstellt kein Array in PHP; Stattdessen überschreibt jeder Schlüssel „images[]“ den vorherigen.
Korrekte Array-Struktur (mit http_build_query):
Um ein Array korrekt zu erstellen, sollten Sie die Verwendung von in Betracht ziehen http_build_query-Funktion:
<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>
Mit dieser Änderung stellt der $fields_string nun korrekt ein Array mit mehreren Werten für den Schlüssel „images“ dar.
Überarbeiteter Code:
Unter Berücksichtigung dieser Anpassungen würde der überarbeitete Code wie folgt aussehen:
<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>
Durch die Implementierung dieser Änderungen wird die Unterstützung für Arrays in cURL-POST-Anfragen effektiv erreicht und sichergestellt, dass alle Werte an übertragen werden den Server wie vorgesehen.
Das obige ist der detaillierte Inhalt vonWie übermittle ich Arrays in cURL-POST-Anfragen ordnungsgemäß?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!