Heim  >  Artikel  >  Backend-Entwicklung  >  Wie übermittle ich Arrays in cURL-POST-Anfragen ordnungsgemäß?

Wie übermittle ich Arrays in cURL-POST-Anfragen ordnungsgemäß?

Susan Sarandon
Susan SarandonOriginal
2024-11-02 01:59:30615Durchsuche

How to Properly Submit Arrays in cURL POST Requests?

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.'&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>

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn