Jawaban:
Kecuali Anda membutuhkan lebih dari sekadar isi file, Anda dapat menggunakannya file_get_contents
.
$xml = file_get_contents("http://www.example.com/file.xml");
Untuk hal yang lebih kompleks, saya akan menggunakan CURL .
failed to open stream: HTTP request failed!
file_get_contents
jangan biarkan Anda mengajukan permintaan dengan cookie khusus, tajuk, dan hal-hal lain yang biasanya dikirimkan oleh peramban, sehingga Anda mungkin tidak mendapatkan respons yang Anda cari. Dalam hal ini, Anda akan lebih baik menggunakan CURL. (Tapi itu bukan kasus OP.)
Untuk permintaan GET / POST yang lebih maju, Anda dapat menginstal perpustakaan CURL ( http://us3.php.net/curl ):
$ch = curl_init("REMOTE XML FILE URL GOES HERE"); // such as http://example.com/example.xml
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, 0);
$data = curl_exec($ch);
curl_close($ch);
file_get_contents()
. Sebuah string 4 huruf sederhana membutuhkan waktu sekitar 10 detik dengan itu, sementara curl mengambil lebih masuk akal ~ maks 1 detik.
http_get
harus melakukan trik. Keuntungan http_get
lebih file_get_contents
mencakup kemampuan untuk melihat tajuk HTTP, mengakses detail permintaan, dan mengontrol batas waktu koneksi.
$response = http_get("http://www.example.com/file.xml");
Ingat bahwa jika Anda menggunakan proxy, Anda perlu melakukan sedikit trik dalam kode php Anda:
(PROXY WITHOUT AUTENTICATION EXAMPLE)
<?php
$aContext = array(
'http' => array(
'proxy' => 'proxy:8080',
'request_fulluri' => true,
),
);
$cxContext = stream_context_create($aContext);
$sFile = file_get_contents("http://www.google.com", False, $cxContext);
echo $sFile;
?>
Bergantung pada apakah pengaturan php Anda memungkinkan fopen pada URL, Anda juga bisa membuka URL dengan argumen get dalam string (seperti http://example.com?variable=value )
Sunting: Membaca kembali pertanyaan Saya tidak yakin apakah Anda ingin meneruskan variabel atau tidak - jika Anda tidak, Anda dapat mengirim permintaan fopen containg http://example.com/filename.xml - jangan ragu untuk mengabaikan bagian variabel = nilai
Saya suka menggunakan fsockopen terbuka untuk ini.
Di sisi lain, menggunakan REST API dari server lain sangat populer di PHP. Misalkan Anda mencari cara untuk mengarahkan kembali beberapa permintaan HTTP ke server lain (misalnya mendapatkan file xml). Ini adalah paket PHP untuk membantu Anda:
https://github.com/romanpitak/PHP-REST-Client
Jadi, dapatkan file xml:
$client = new Client('http://example.com');
$request = $client->newRequest('/filename.xml');
$response = $request->getResponse();
echo $response->getParsedResponse();
Guzzle adalah perpustakaan yang sangat terkenal yang membuatnya sangat mudah untuk melakukan semua jenis panggilan HTTP. Lihat https://github.com/guzzle/guzzle . Instal dengan composer require guzzlehttp/guzzle
dan jalankan composer install
. Sekarang kode di bawah ini sudah cukup untuk panggilan http.
$client = new \GuzzleHttp\Client();
$response = $client->get('https://example.com/path/to/resource');
echo $response->getStatusCode();
echo $response->getBody();