Respostas:
A menos que você precise mais do que apenas o conteúdo do arquivo, você poderá usá-lo file_get_contents
.
$xml = file_get_contents("http://www.example.com/file.xml");
Para algo mais complexo, eu usaria cURL .
failed to open stream: HTTP request failed!
file_get_contents
não permite que você faça a solicitação com cookies, cabeçalhos e outras coisas personalizadas que um navegador normalmente envia; portanto, você pode não obter a resposta que estava procurando. Nesse caso, seria melhor usar CURL de qualquer maneira. (Mas isso não é o caso do OP.)
Para solicitações GET / POST mais avançadas, você pode instalar a biblioteca 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()
. Uma sequência simples de 4 letras levou cerca de 10 segundos, enquanto a curvatura levou um máximo mais razoável de ~ 1 segundo.
http_get
deve fazer o truque. As vantagens do http_get
excesso file_get_contents
incluem a capacidade de exibir cabeçalhos HTTP, acessar detalhes da solicitação e controlar o tempo limite da conexão.
$response = http_get("http://www.example.com/file.xml");
Lembre-se de que, se você estiver usando um proxy, precisará fazer um pequeno truque no seu código php:
(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;
?>
Dependendo da configuração do php permitir a abertura de URLs, você também pode simplesmente abrir a URL com os argumentos get na string (como http://example.com?variable=value )
Editar: relendo a pergunta Não tenho certeza se você deseja passar variáveis ou não - se não estiver, pode simplesmente enviar a solicitação fopen contendo http://example.com/filename.xml - fique à vontade ignorar a variável = parte do valor
Eu gosto de usar o fsockopen open para isso.
Por outro lado, o uso da API REST de outros servidores é muito popular no PHP. Suponha que você esteja procurando uma maneira de redirecionar algumas solicitações HTTP para outro servidor (por exemplo, obtendo um arquivo xml). Aqui está um pacote PHP para ajudá-lo:
https://github.com/romanpitak/PHP-REST-Client
Então, obtendo o arquivo xml:
$client = new Client('http://example.com');
$request = $client->newRequest('/filename.xml');
$response = $request->getResponse();
echo $response->getParsedResponse();
O Guzzle é uma biblioteca muito conhecida, que torna extremamente fácil realizar todo tipo de chamadas HTTP. Consulte https://github.com/guzzle/guzzle . Instale com composer require guzzlehttp/guzzle
e execute composer install
. Agora, o código abaixo é suficiente para uma chamada http get.
$client = new \GuzzleHttp\Client();
$response = $client->get('https://example.com/path/to/resource');
echo $response->getStatusCode();
echo $response->getBody();