回答:
ファイルの内容以上のものが必要でない限り、を使用できますfile_get_contents
。
$xml = file_get_contents("http://www.example.com/file.xml");
failed to open stream: HTTP request failed!
file_get_contents
ことながら、ブラウザーが通常送信するカスタムCookie、ヘッダー、およびその他のものを使用して要求を行うことはできないため、探している応答が得られない可能性があります。その場合は、とにかくCURLを使用したほうがよいでしょう。(しかし、それはOPの場合ではありません。)
より高度なGET / POSTリクエストの場合は、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()
。単純な4文字の文字列の場合は約10秒かかりましたが、カールの場合は最大で1秒ほどかかりました。
http_get
トリックを行う必要があります。http_get
以上の利点にfile_get_contents
は、HTTPヘッダーの表示、リクエストの詳細へのアクセス、接続タイムアウトの制御などがあります。
$response = http_get("http://www.example.com/file.xml");
プロキシを使用している場合は、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;
?>
PHP設定でURLのfopenが許可されているかどうかに応じて、文字列にget引数(http://example.com?variable=valueなど)を使用してURLを単純にfopenすることもできます。
編集:私はあなたが変数を渡すために探したりしていないかどうかかどうか分からない質問の再読み込み-あなたがいないのであればあなたは、単にfopenを要求containg送ることができhttp://example.com/filename.xmlを -気軽variable = valueの部分を無視するには
これにはfsockopen openを使用します。
一方、他のサーバーのREST APIを使用することは、PHPで非常に人気があります。一部のHTTPリクエストを他のサーバーにリダイレクトする方法(たとえば、xmlファイルを取得する)を探しているとします。ここにあなたを助けるためのPHPパッケージがあります:
https://github.com/romanpitak/PHP-REST-Client
したがって、xmlファイルを取得します。
$client = new Client('http://example.com');
$request = $client->newRequest('/filename.xml');
$response = $request->getResponse();
echo $response->getParsedResponse();
Guzzleは非常によく知られたライブラリで、あらゆる種類のHTTP呼び出しを非常に簡単に実行できます。https://github.com/guzzle/guzzleを参照してください。でインストールしcomposer require guzzlehttp/guzzle
て実行しcomposer install
ます。これで、http get呼び出しには次のコードで十分です。
$client = new \GuzzleHttp\Client();
$response = $client->get('https://example.com/path/to/resource');
echo $response->getStatusCode();
echo $response->getBody();