メインコンテンツまでスキップ

ファイルダウンロード

HTTPS プロトコルによるファイルダウンロードを行う方法を示します。

この例では、データベースから会員データをエクスポートし、CSV ファイルとしてダウンロードします。

ソース

PEAR ライブラリ、HTTP_Requestを使用した一例です。

ただしこの PEAR ライブラリは環境によりプロキシ経由の SSL 通信ができない場合があるため、注意が必要です。

#!/usr/bin/php
<?php
require_once 'HTTP/Request.php';
define("KR_RPC_SOAP_URI", "https://krs.bz/rpc");
$location = 'アクセス先URL';
$soap = new SoapClient(null, [
'soap_version' => SOAP_1_2,
'location' => $location,
'uri' => KR_RPC_SOAP_URI,
'trace' => true
]);
$soap->__setCookie("Cookie-Check", "1");

try {
$soap->loginSession("admin@example.com", "password");
$batchjob_id = $soap->exportMembers(81, 121, 87, true);
do {
sleep(30);
$status = $soap->getBatchJobStatus($batchjob_id);
$progress = $status["progress"];
} while ($progress < 100);
$uri = $soap->getBatchJobResultURL($batchjob_id);
$request = new HTTP_Request($uri);
$request->sendRequest();
$response_code = $request->getResponseCode();
if ($response_code == 200) {
file_put_contents("/tmp/download.csv", $request->getResponseBody());
}
echo "ResponseCode: $response_code\n";
} catch (Exception $e) {
echo "SOAP exception..\n";
echo $e->faultcode . "\n";
echo $e->faultstring . "\n";
echo $e->detail . "\n";
}

実行結果

$ ./soap.php
ResponseCode: 200