web-dev-qa-db-ja.com

PHPからGETリクエストを送信する方法

単純な要件としてPHPを使用することを計画しています。 URLからXMLコンテンツをダウンロードする必要があります。そのためには、そのURLにHTTP GETリクエストを送信する必要があります。

どうやってPHPでやるの?

254
Veera

ファイルの内容だけでは足りない場合は、 file_get_contents を使用できます。

$xml = file_get_contents("http://www.example.com/file.xml");

もっと複雑な場合は、 cURL を使用します。

344
Sasha Chedygov

より高度な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);
125
James Skidmore

http_get がうまくいくはずです。 http_getの利点 file_get_contents には、HTTPヘッダーの表示、要求の詳細へのアクセス、および接続タイムアウトの制御が含まれます。

$response = http_get("http://www.example.com/file.xml");
62
William Brendel

プロキシを使用している場合は、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;
?>
19
pepe

あなたのphp設定がURLのfopenを許可するかどうかに応じて、あなたは単に文字列のget引数でurlをfopenすることもできます( http://example.com?variable=value のように)

編集:質問を読み直す私はあなたが変数を渡すことを検討しているかどうかわからない - あなたがしていない場合あなたは単にfopen要求を含むことができます http://example.com/filename .xml - variable = valueの部分は無視してかまいません

9
Zxaos

一方、他のサーバーのREST AP​​Iを使用することは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();
5
Mostafa

これにはfsockopenを使うのが好きです。

5
pbreitenbach

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();
2
Mark Baaijens