PHP mengintegrasikan akses ke dua protokol, XML-RPC dan SOAP, keduanya terkonsentrasi pada ekstensi xmlrpc. Selain itu, di PEAR PHP, apakah itu PHP 4 atau PHP 5, ekstensi XML-RPC telah terintegrasi secara default, dan ekstensi ini tidak ada hubungannya dengan ekstensi xmlrpc dan dapat secara mandiri mengimplementasikan interaksi protokol XML-RPC tidak ada ekstensi xmlrpc, disarankan Gunakan ekstensi PEAR::XML-RPC.
Pengenalan
Layanan Web Layanan Web diciptakan untuk komunikasi sistem heterogen. Ide dasarnya adalah menggunakan panggilan jarak jauh HTTP berbasis XML untuk menyediakan mekanisme standar, sehingga menghilangkan kebutuhan untuk membuat protokol baru. Saat ini, terdapat dua standar protokol untuk komunikasi Layanan Web, satu adalah XML-RPC dan yang lainnya adalah SOAP. XML-RPC relatif sederhana dan muncul lebih awal, sedangkan SOAP lebih kompleks dan terutama digunakan ketika stabilitas, ketahanan, keamanan, dan interaksi kompleks diperlukan.
Di sini kami terutama menggunakan XML-RPC untuk menjelaskan secara singkat proses interaksi Layanan Web. Beberapa konten berasal dari manual PHP.
Instal ekstensi xmlrpc.
Jika ekstensi xmlrpc php tidak terinstal di sistem Anda, silakan instal dengan benar.
Pada platform Windows, letakkan terlebih dahulu ekstensi php_xmlrpc.dll pada direktori instalasi PHP ke dalam direktori C:Windows atau C:Winnt (ekstensi untuk PHP4 ada pada direktori C:phpextensions, dan ekstensi untuk PHP5 ada di direktori C:phpext), dan hilangkan tanda titik koma ";" di depan extension=php_xmlrpc.dll di C:Windowsphp.ini atau C:Winntphp.ini, kemudian restart web server dan cek phpinfo() Ada tidaknya project XML-RPC dapat menentukan apakah extension xmlrpc sudah terinstall dengan benar.
Di bawah platform Unix/Linux, jika ekstensi xmlrpc tidak diinstal, harap kompilasi ulang PHP, tambahkan opsi --with-xmlrpc saat konfigurasi, lalu periksa phpinfo() untuk melihat apakah xmlrpc diinstal secara normal.
(Catatan: Operasi berikut ini didasarkan pada instalasi normal ekspansi xmlrpc. Pastikan untuk menginstalnya dengan benar.)
Prinsip Kerja XML-RPC
XML-RPC secara umum berarti bahwa seluruh proses menggunakan XML untuk komunikasi. Pertama, server RPC dibangun untuk memproses permintaan yang dienkapsulasi XML yang diteruskan dari klien RPC, dan hasil pemrosesan dikembalikan ke klien RPC dalam bentuk XML.
Sisi server XML-RPC harus memiliki fungsi siap pakai untuk dipanggil oleh klien, dan fungsi serta metode dalam permintaan yang diajukan oleh klien harus konsisten dengan yang ada di sisi server, jika tidak, hasil yang diperlukan tidak akan diperoleh.
Di bawah ini saya membuat kode sederhana untuk menggambarkan keseluruhan proses.
Serverlatihan XML-RPC
menggunakan fungsi xmlrpc_server_create untuk menghasilkan server, kemudian mendaftarkan antarmuka panggilan RPC yang perlu diekspos, menerima data XML POST dari klien RPC, dan kemudian memprosesnya dalam bentuk XML.
Kodenya sebagai berikut: rpc_server.php
<?php
/**
* Fungsi: fungsi yang disediakan untuk dipanggil oleh klien RPC
* Parameter:
* $method adalah fungsi yang perlu dipanggil oleh klien
* $params adalah array parameter dari fungsi yang perlu dipanggil oleh klien.
* Return: Mengembalikan hasil panggilan yang ditentukan
*/
fungsi rpc_server_func($metode, $params) {
$parameter = $params[0];
if ($parameter == "dapatkan"){
$return = ''Data ini dengan metode get'';
}kalau tidak{
$return = ''Tidak menentukan metode atau parameter'';
}
kembali $kembali;
}
//Buat sisi server XML-RPC
$xmlrpc_server = xmlrpc_server_create();
//Daftarkan metode rpc_server yang dipanggil oleh server, yang sebenarnya menunjuk ke fungsi rpc_server_func
xmlrpc_server_register_method($xmlrpc_server, "rpc_server", "rpc_server_func");
//Terima data XML POST dari klien
$request = $HTTP_RAW_POST_DATA;
//Dapatkan hasil eksekusi setelah mengeksekusi permintaan XML yang memanggil klien
$xmlrpc_response = xmlrpc_server_call_method($xmlrpc_server, $request, null);
//Output hasil XML setelah pemrosesan fungsi
header(''Jenis Konten: teks/xml'');
echo $xmlrpc_response;
//Hancurkan sumber daya sisi server XML-RPC
xmlrpc_server_destroy($xmlrpc_server);
?>
Setelah sisi server selesai dibuat, mari buat klien RPC kita. Klien mengakses port 80 server XML-RPC secara kasar melalui Socket, kemudian merangkum antarmuka RPC yang perlu dipanggil ke dalam XML, mengirimkannya ke server RPC melalui permintaan POST, dan akhirnya mendapatkan hasil yang dikembalikan oleh server.
Kodenya sebagai berikut: rpc_client.php
<?php
/**
* Fungsi: Fungsi yang diberikan kepada klien untuk terhubung ke server XML-RPC
* Parameter:
* $host Host yang perlu dihubungkan
* $port port untuk terhubung ke host
* $rpc_server File sisi server XML-RPC
* $request informasi permintaan XML yang dienkapsulasi
* Return: Jika koneksi berhasil, informasi XML yang dikembalikan oleh server akan dikembalikan.
*/
function rpc_client_call($host, $port, $rpc_server, $request) {
/ //Buka server yang ditentukan
$fp = fsockopen($host, $port);
//Buat kueri informasi permintaan POST dari server XML-RPC yang perlu berkomunikasi
$query = "POST $rpc_server HTTP/1.0nUser_Agent: Klien XML-RPCnHost: ".$host."nTipe Konten: teks/xmlnPanjang Konten: ".strlen($request)."n n".$request."n";
//Kirim protokol HTTP yang dibuat ke server, dan kembalikan false jika gagal.
if (!fputs($fp, $query, strlen($query))) {
$errstr = "Kesalahan penulisan";
kembali salah;
}
//Dapatkan semua informasi yang dikembalikan dari server, termasuk header HTTP dan informasi XML
$isi = '''';
sementara (!feof($fp)){
$isi .= hal($fp);
}
//Kembalikan konten yang diperoleh setelah menutup sumber koneksi
fclose($fp);
kembalikan $isi;
}
//Membangun informasi untuk terhubung ke server RPC
$host = ''host lokal'';
$pelabuhan = 80;
$rpc_server = ''/~heiyeluren/rpc_server.php'';
//Enkode permintaan XML yang perlu dikirim ke XML.
$request = xmlrpc_encode_request(''rpc_server'', ''get'');
//Panggil fungsi rpc_client_call untuk mengirim semua permintaan ke server XML-RPC dan mendapatkan informasinya
$response = rpc_client_call($host, $port, $rpc_server, $request);
//Analisis XML yang dikembalikan dari server, hapus informasi header HTTP, dan ubah XML menjadi string yang dapat dikenali PHP
$split = ''<?xml version="1.0" coding="iso-8859-1"?>'';
$xml = meledak($split, $respon);
$xml = $pecah .array_pop($xml);
$response = xmlrpc_decode($xml);
//Output informasi yang diperoleh dari server RPC
print_r($respon);
?>
Secara kasar, contoh kita di atas adalah mengirimkan metode bernama rpc_server, parameternya adalah get, dan kemudian mendapatkan return dari server. Data XML yang dikembalikan oleh server adalah:
<?xml version="1.0" coding=" iso-8859-1"?>
<metodeRespon>
<param>
<param>
<nilai>
<string>Data ini dengan metode get</string>
</nilai>
</param>
</param>
</methodResponse>
Kemudian kita mengkodekan XML ini ke dalam string PHP melalui fungsi xmlrpc_decode, dan kita dapat memprosesnya sesuka hati, dan seluruh interaksi Layanan Web selesai.
Kesimpulan
Baik itu XML-RPC atau SOAP, selama memungkinkan kita melakukan panggilan proses jarak jauh dengan stabil dan aman serta menyelesaikan proyek kita, maka seluruh Layanan Web akan berhasil. Selain itu, jika memungkinkan, Anda juga dapat mencoba menggunakan XML-RPC di PEAR untuk mengimplementasikan operasi serupa di atas.
Cukup gunakan XML-RPC untuk interaksi Layanan Web. Untuk beberapa kode, silakan merujuk ke manual PHP. Jika Anda ingin mendapatkan informasi detail, disarankan untuk merujuk ke manual.
Artikel ini berasal dari link asli informasi PHP: http://www.phpchina.com/html/84/n-33884.html