Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Menghantar Tatasusunan dengan Betul dalam Permintaan CURL POST?

Bagaimana untuk Menghantar Tatasusunan dengan Betul dalam Permintaan CURL POST?

Susan Sarandon
Susan Sarandonasal
2024-11-02 01:59:30615semak imbas

How to Properly Submit Arrays in cURL POST Requests?

Menyokong Tatasusunan dalam Permintaan CURL POST

Dalam pertanyaan ini, pengguna mendapatkan panduan tentang cara menggunakan tatasusunan dalam permintaan cURL POST. Apabila menggunakan tatasusunan dalam kod yang disediakan, hanya nilai pertama sedang diserahkan. Meneroka kod yang diserahkan, kebimbangan berikut dikenal pasti:

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

Struktur Tatasusunan Salah:

Isu utama terletak pada struktur tatasusunan yang salah di:

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

Pendekatan ini tidak akan mencipta tatasusunan dalam PHP; sebaliknya, setiap kekunci 'imej[]' akan menimpa yang sebelumnya.

Struktur Tatasusunan Betul (Menggunakan http_build_query):

Untuk membina tatasusunan dengan betul, pertimbangkan untuk menggunakan Fungsi 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>

Dengan pengubahsuaian ini, $fields_string kini akan mewakili tatasusunan dengan berbilang nilai untuk kunci 'imej' dengan betul.

Kod Disemak:

Menggabungkan pelarasan ini, kod yang disemak akan dipaparkan seperti berikut:

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

Dengan melaksanakan pengubahsuaian ini, sokongan untuk tatasusunan dalam permintaan cURL POST dicapai dengan berkesan, memastikan semua nilai dihantar ke pelayan seperti yang dimaksudkan.

Atas ialah kandungan terperinci Bagaimana untuk Menghantar Tatasusunan dengan Betul dalam Permintaan CURL POST?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn