Respon curl ke array php

Saat data perlu dikirimkan ke URL eksternal, API misalnya, curl dapat digunakan. Curl ada di baris perintah dan sebagai perpustakaan di banyak bahasa pemrograman, seperti PHP

POSTing data dengan curl, perintahnya

Memulai dengan perintah curl biasanya sangat membantu. Ini juga membantu untuk memahami cara kerja URL jarak jauh, bidang apa yang diperlukan dan jenis input apa (seperti multiform atau json) yang diterima

ck@mintp ~ $ curl -X POST https. //ku. contoh. kompos. php -d "nama depan=Claudio" -d "nama belakang=Kuenzler" -d "perusahaan=Infiniroot GmbH"

Dalam hal ini beberapa bidang/parameter (nama depan, nama belakang, dan perusahaan) dikirimkan ke URL eksternal. Menggunakan cara pengiriman data "default" ini, gunakan aplikasi tipe konten/x-www-form-urlencoded di latar belakang. Ini dapat diverifikasi menggunakan opsi --trace (diikuti dengan tanda hubung lainnya)

ck@mintp ~ $ curl --trace - -X POST https. //ku. contoh. kompos. php -d "nama depan=Claudio" -d "nama belakang=Kuenzler" -d "perusahaan=Infiniroot GmbH"
[. ]
=> Kirim tajuk, 175 byte (0xaf)
0000. 50 4f 53 54 20 2f 61 63 74 69 6f 6e 2f 6e 69 6e POST / pos. php H
0010. 6a 61 2e 70 68 70 20 48 54 54 50 2f 31 2e 31 0d TTP/1. 1. Tuan rumah. m
0020. 0a 48 6f 73 74 3a 20 77 77 77 2e 61 6c 76 61 6e y. contoh. com. U
0040. 0a 55 73 65 72 2d 41 67 65 6e 74 3a 20 63 75 72 ser-Agen. keriting/
0050. 6c 2f 37 2e 35 32 2e 31 0d 0a 41 63 63 65 70 74 /7. 52. 1. Menerima
0060. 3a 20 2a 2f 2a 0d 0a 43 6f 6e 74 65 6e 74 2d 4c  */*. Konten-Le
0070. 65 6e 67 74 68 3a 20 31 33 31 0d 0a 43 6f 6e 74 ngth. 131. Conte
0080. 65 6e 74 2d 54 79 70 65 3a 20 61 70 70 6c 69 63 Tipe-nt. aplikasi
0090. 61 74 69 6f 6e 2f 78 2d 77 77 77 2d 66 6f 72 6d tion/x-www-form-
00a0. 2d 75 72 6c 65 6e 63 6f 64 65 64 0d 0a 0d 0a    dikodekan url
=> Kirim data, 131 byte (0x83)
0000. 63 6f 6d 70 61 6e 79 3d 74 65 73 74 26 66 69 72 nama depan=Claudi
0010. 73 74 6e 61 6d 65 3d ​​43 6c 61 75 64 69 6f 26 6c o&namabelakang=Kuenzl
0020. 61 73 74 6e 61 6d 65 3d ​​4b 75 65 6e 7a 6c 65 72 er&perusahaan=Infini
0030. 26 63 6f 6d 70 61 6e 79 3d 54 65 74 20 43 6f 6d akar
== Informasi. upload benar-benar dikirim. 131 dari 131 byte
[. ]

Catatan 1. -trace tersedia sejak curl ~7. 51
Catatan 2. Data POST asli disamarkan, sehingga Panjang Konten tidak cocok

Jika API jarak jauh memerlukan data yang dikirimkan dalam format JSON, permintaan HTTP POST perlu sedikit disesuaikan

ck@mintp. ~$ curl -X POST -H "Jenis-Konten. aplikasi/json" https. //ku. contoh. kompos. php -d '"nama depan". "Claudio", "nama belakang". "Kuenzler", "perusahaan". "Infiniroot GmbH"'

Di sini header Content-Type diatur ke application/json dan data diformat ke dalam format JSON

POSTing data dengan libcurl di PHP

Seperti disebutkan, curl juga bisa digunakan di PHP. Jika Anda berasal dari baris perintah curl, ini mungkin terlihat aneh pada awalnya. Semua opsi dan parameter baris perintah curl ditentukan oleh curl_setopt untuk satu opsi atau curl_setopt_array untuk beberapa opsi sekaligus

Jadi tipikal POST dengan libcurl di PHP, menggunakan data yang sama seperti pada contoh baris perintah, terlihat seperti ini

// Memasukkan semua data POST ke dalam array
$data = larik(
"nama depan" => "Claudio",
"nama belakang" => "Kuenzler",
"perusahaan" => "Infiniroot GmbH",
);

// Inisialisasi panggilan curl baru
$curl = curl_init();

// Masukkan semua opsi curl yang berbeda ke dalam array
$pilihan = [
CURLOPT_URL => 'https. //ku. contoh. kompos. php',
CURLOPT_RETURNTRANSFER => benar,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POST => 1,
CURLOPT_POSTFIELDS => $data,
];

// Gunakan larik opsi dan beri tahu curl untuk menggunakan opsi ini
curl_setopt_array($curl, $opts);

// Luncurkan permintaan curl menggunakan curl_exec dan simpan hasilnya (dari URL jarak jauh) di $response
$respons = curl_exec($curl);

// Tutup panggilan curl
curl_close($curl);

Ini sekali lagi menggunakan aplikasi Content-Type default/x-www-form-urlencoded

POST data json dengan libcurl di PHP

Untuk mengirimkan data dalam format json, array $data terlebih dahulu harus diformat menjadi json. Ini dapat dengan mudah dilakukan dengan menggunakan fungsi json_encode. Fungsi ini pada dasarnya mem-parsing array dan membuat string json darinya, disimpan sebagai $payload. Selain itu, header Content-Type perlu ditambahkan di $opts

// Memasukkan semua data POST ke dalam array
$data = larik(
"nama depan" => "Claudio",
"nama belakang" => "Kuenzler",
"perusahaan" => "Infiniroot GmbH",
);

// Format ulang data menjadi JSON
$payload = json_encode($data);

// Inisialisasi panggilan curl baru
$curl = curl_init();

// Masukkan semua opsi curl yang berbeda ke dalam array
$pilihan = [
CURLOPT_URL => 'https. //ku. contoh. kompos. php',
CURLOPT_RETURNTRANSFER => benar,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POST => 1,
CURLOPT_HTTPHEADER => [ 'Tipe-Konten. aplikasi/json' ],
CURLOPT_POSTFIELDS => $muatan,
];

// Gunakan larik opsi dan beri tahu curl untuk menggunakan opsi ini
curl_setopt_array($curl, $opts);

// Luncurkan permintaan curl menggunakan curl_exec dan simpan hasilnya (dari URL jarak jauh) di $response
$respons = curl_exec($curl);

// Tutup panggilan curl
curl_close($curl);

Debug dengan curl_getinfo

Apakah kode berjalan dengan baik atau tidak, Anda mungkin ingin mendapatkan informasi tambahan tentang permintaan curl yang dieksekusi. Di sinilah curl_getinfo berperan. Fungsi ini menganalisis panggilan curl ($curl) dan menyimpan informasi tentang permintaan dan respons server dalam sebuah array. Sebelum menutup panggilan curl, informasi dapat disimpan ke dalam variabel ($info)

// Memasukkan semua data POST ke dalam array
$data = larik(
"nama depan" => "Claudio",
"nama belakang" => "Kuenzler",
"perusahaan" => "Infiniroot GmbH",
);

// Format ulang data menjadi JSON
$payload = json_encode($data);

// Inisialisasi panggilan curl baru
$curl = curl_init();

// Masukkan semua opsi curl yang berbeda ke dalam array
$pilihan = [
CURLOPT_URL => 'https. //ku. contoh. kompos. php',
CURLOPT_RETURNTRANSFER => benar,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POST => 1,
CURLOPT_HTTPHEADER => [ 'Tipe-Konten. aplikasi/json' ],
CURLOPT_POSTFIELDS => $muatan,
];

// Gunakan larik opsi dan beri tahu curl untuk menggunakan opsi ini
curl_setopt_array($curl, $opts);

// Luncurkan permintaan curl menggunakan curl_exec dan simpan hasilnya (dari URL jarak jauh) di $response
$respons = curl_exec($curl);

// Menyimpan informasi tentang panggilan curl yang dieksekusi ini
$info = curl_getinfo($curl);

// Tutup panggilan curl
curl_close($curl);

Seperti disebutkan di atas, informasi (nilai pengembalian) tentang transmisi curl ini disimpan dalam array. Ada banyak nilai pengembalian, lihat dokumentasi curl_getinfo untuk daftar terbaru. Apa yang pasti membantu untuk digunakan dalam setiap kode, adalah memeriksa http_code (kode pengembalian http dari respons server)