Yanıtlar:
Dosyanın içeriğinden daha fazlasına ihtiyacınız olmadığı sürece kullanabilirsiniz file_get_contents
.
$xml = file_get_contents("http://www.example.com/file.xml");
Daha karmaşık bir şey için cURL kullanırdım .
failed to open stream: HTTP request failed!
file_get_contents
özel çerezler, başlıklar ve bir tarayıcının genellikle göndereceği diğer şeylerle istekte bulunmanıza izin vermez, bu nedenle aradığınız yanıtı alamayabilirsiniz. Bu durumda, yine de CURL kullanmaktan daha iyi olur. (Ama bu OP'nin durumu değil.)
Daha gelişmiş GET / POST istekleri için CURL kitaplığını yükleyebilirsiniz ( 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()
. Basit bir 4 harfli dize yaklaşık 10 saniye sürerken, kıvrım daha makul ~ 1 saniye maks.
http_get
hile yapmalı. Avantajları http_get
üzerinde file_get_contents
HTTP başlıkları görüntüleme yeteneği, erişim isteği ayrıntıları ve bağlantı zaman aşımı kontrol sayılabilir.
$response = http_get("http://www.example.com/file.xml");
Bir proxy kullanıyorsanız, php kodunuzda küçük bir numara yapmanız gerektiğini unutmayın:
(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;
?>
Php kurulumunuzun URL'lerde fopen'e izin verip vermediğine bağlı olarak, URL'yi dizedeki get bağımsız değişkenleriyle de (örneğin, http://example.com?variable=value ) fopen edebilirsiniz.
Düzenleme: Soruyu yeniden okumak Değişkenleri geçmek isteyip istemediğinizden emin değilim - değilseniz, http://example.com/filename.xml içeren fopen isteğini gönderebilirsiniz - çekinmeyin değişkeni yoksaymak = değer parçası
Bunun için açık fsockopen kullanmayı seviyorum.
Öte yandan, diğer sunucuların REST API'sini kullanmak PHP'de çok popülerdir. Bazı HTTP isteklerini diğer sunucuya yönlendirmek için bir yol aradığınızı varsayalım (örneğin, bir xml dosyası almak). İşte size yardımcı olacak bir PHP paketi:
https://github.com/romanpitak/PHP-REST-Client
Yani, xml dosyasını almak:
$client = new Client('http://example.com');
$request = $client->newRequest('/filename.xml');
$response = $request->getResponse();
echo $response->getParsedResponse();
Guzzle her türlü HTTP çağrısı yapmayı son derece kolaylaştıran çok iyi bilinen bir kütüphanedir. Bkz. Https://github.com/guzzle/guzzle . İle yükleyin composer require guzzlehttp/guzzle
ve çalıştırın composer install
. Şimdi bir http almak için aşağıdaki kod yeterlidir.
$client = new \GuzzleHttp\Client();
$response = $client->get('https://example.com/path/to/resource');
echo $response->getStatusCode();
echo $response->getBody();