ver.1サポートサイト


単票(PHP)

最終更新日:2023年02月21日

単票URLを取得するサンプルプログラムです。

本サンプルプログラムは外部呼出し(スパイラル以外のサーバから動作させる場合)と内部呼出し(スパイラル内部で動作させる場合)と分けて記載をしています。利用する用途によって使用するサンプルプログラムの使い分けを行ってください。

※外部呼出しに利用するサンプルプログラムにはスパイラル内のWebコンポーネントで使用できない関数などが含まれる場合がありますのでご注意ください。

使用できないPHPの関数について、PHP利用時の注意事項をご覧ください。

※内部呼出しを利用する場合はアカウント内APIの設定を「ON」に変更する必要があります。

外部呼出しを利用する場合

<?php

// サービス用のURL (ロケータから取得)
$api_url = "https://xxxxx.smp.ne.jp/api/service";
$api_token = "00000XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
$api_secret = "000000000000000000000000000000000abcdef";

// -----------------------------------------------------------------------------
// ログイン
// -----------------------------------------------------------------------------

// API用のHTTPヘッダ
$api_header = "";
$api_header .= "X-SPIRAL-API: area/login/request\r\n";
$api_header .= "Content-Type: application/json; charset=UTF-8\r\n";

// 送信するJSONデータを作成
$parameters = array();
$parameters["spiral_api_token"] = $api_token;
$parameters["my_area_title"] = "api_auth";
$parameters["id"] = "test01";
$parameters["password"] = "pass01";
$parameters["passkey"] = time();
$parameters["url_type"] = "2";

// 署名を付けます
$key = $parameters["spiral_api_token"] . "&" . $parameters["passkey"];
$secret = $api_secret;
$parameters["signature"] = hash_hmac('sha1', $key, $secret, false);
$json = json_encode($parameters);

// POSTで送信します。
$stream = stream_context_create(
    array('http' => array(
        'method' => 'POST',
        'protocol_version' => '1.0',
        'header' => $api_header,
        'content' => $json
    ))
);

// レスポンスデータ読み込み
$response = file_get_contents($api_url, false, $stream);

// 画面に表示
print_r(json_decode($response, true));
$response_json = json_decode($response, true);
$jsessionid = $response_json["jsessionid"];

// -----------------------------------------------------------------------------
// 単票のURLを取得
// -----------------------------------------------------------------------------

// API用のHTTPヘッダ
$api_header = "";
$api_header .= "X-SPIRAL-API: table/card/request\r\n";
$api_header .= "Content-Type: application/json; charset=UTF-8\r\n";

// 送信するJSONデータを作成
$parameters = array();
$parameters["spiral_api_token"] = $api_token;
$parameters["passkey"] = time();

// 署名を付けます
$key = $parameters["spiral_api_token"] . "&" . $parameters["passkey"];
$secret = $api_secret;
$parameters["signature"] = hash_hmac('sha1', $key, $secret, false);

// URLを取得する単票タイトル
$parameters["card_title"] = "api_card";
$parameters["my_area_title"] = "api_auth";
$parameters["jsessionid"] = $jsessionid;
$parameters["ids"] = array(100, 101, 102);
$parameters["url_type"] = "2";
$json = json_encode($parameters);

// POSTで送信します。
$stream = stream_context_create(
    array('http' => array(
        'method' => 'POST',
        'protocol_version' => '1.0',
        'header' => $api_header,
        'content' => $json
    ))
);

// レスポンスデータ読み込み
$response = file_get_contents($api_url, false, $stream);

// 画面に表示
print_r(json_decode($response, true));

// -----------------------------------------------------------------------------
// ログアウト
// -----------------------------------------------------------------------------

// API用のHTTPヘッダ
$api_header = "";
$api_header .= "X-SPIRAL-API: area/logout/request\r\n";
$api_header .= "Content-Type: application/json; charset=UTF-8\r\n";

// 送信するJSONデータを作成
$parameters = array();
$parameters["spiral_api_token"] = $api_token;
$parameters["my_area_title"] = "api_auth";
$parameters["passkey"] = time();

// セッションIDを付けます
$parameters["jsessionid"] = $jsessionid;

// 署名を付けます
$key = $parameters["spiral_api_token"] . "&" . $parameters["passkey"];
$secret = $api_secret;
$parameters["signature"] = hash_hmac('sha1', $key, $secret, false);
$json = json_encode($parameters);

// POSTで送信します。
$stream = stream_context_create(
    array('http' => array(
        'method' => 'POST',
        'protocol_version' => '1.0',
        'header' => $api_header,
        'content' => $json
    ))
);

// レスポンスデータ読み込み
$response = file_get_contents($api_url, false, $stream);

// 画面に表示
print_r(json_decode($response, true));

?>

内部呼出しを利用する場合

<?php

// マイエリアタイトル
$AREA_TITLE = "api_auth";


// ログインするレコードの識別キー
$LOGIN_KEY = "test01";

// ログインするレコードのパスワード
$LOGIN_PWD = "pass01";

// 一覧表の単票タイトル
$CARD_TITLE = "api_card";

// APIコミュニケータをセット
$api_communicator = $SPIRAL->getSpiralApiCommunicator();

//============================================
// ログイン
//============================================

// リクエストパラメータのセット
$request = new SpiralApiRequest();
$request->put("my_area_title", $AREA_TITLE);
$request->put("id", $LOGIN_KEY);
$request->put("password", $LOGIN_PWD);
$request->put("url_type", "2");

// スパイラルAPIサーバへリクエストを送信
$response = $api_communicator->request("area", "login", $request);

// レスポンスの取得
if ($response->get("code") == 0) {
    echo "<p>area/login 正常終了。(code:" . $response->get("code") . ")</p>";
} else {
    echo "<p>area/login エラーが発生しました。(code:" . $response->get("code") . ")</p>";
}
print_r($response);

//=======================================================================================================
// ログイン状態の確認、ログインセッションが有効な場合はセッション有効期間を延長
//=======================================================================================================

// jsessionidの取得
if ($response->get("code") == 0) {
    $jsessionid = $response->get("jsessionid");
} else {
    print("\ntable/data エラーが発生しました。(code:" . $response->get("code") . ")\n");
}

// リクエストパラメータのセット
$request = new SpiralApiRequest();
$request->put("jsessionid", $jsessionid);
$request->put("my_area_title", $AREA_TITLE);

// スパイラルAPIサーバへリクエストを送信
$response = $api_communicator->request("area", "status", $request);

// レスポンスの取得
if ($response->get("code") == 0) {
    echo "<p>area/status 正常終了。(code:" . $response->get("code") . ")</p>";
} else {
    echo "<p>area/status エラーが発生しました。(code:" . $response->get("code") . ")</p>";
}
print_r($response);

//========================================================
// 指定した単票URLを取得  table/card
//========================================================

// リクエストパラメータのセット
$request = new SpiralApiRequest();
$request->put("jsessionid", $jsessionid);
$request->put("my_area_title", $AREA_TITLE);
$request->put("card_title", $CARD_TITLE);
$request->put("ids", array(1));
$request->put("url_type", "2");

// スパイラルAPIサーバへリクエストを送信
$response = $api_communicator->request("table", "card", $request);

// レスポンスの取得
if ($response->get("code") == 0) {
    echo "<p>table/card 正常終了。(code:" . $response->get("code") . ")</p>";
} else {
    echo "<p>table/card エラーが発生しました。(code:" . $response->get("code") . ")</p>";
}
print_r($response);

//================================================
// ログアウト
//================================================

// リクエストパラメータのセット
$request = new SpiralApiRequest();
$request->put("jsessionid", $jsessionid);
$request->put("my_area_title", $AREA_TITLE);

// スパイラルAPIサーバへリクエストを送信
$response = $api_communicator->request("area", "logout", $request);

// レスポンスの取得
if ($response->get("code") == 0) {
    echo "<p>area/logout 正常終了。(code:" . $response->get("code") . ")</p>";
} else {
    echo "<p>area/logout エラーが発生しました。(code:" . $response->get("code") . ")</p>";
}

print_r($response);
?>