Skill Note

平凡なエンジニアがメモ代わりにプログラミング, インフラ, ネットワークを書き綴るブログ

[Oracle]WEBサイトやWEB APIをOracleから呼び出す方法

      2015/02/21

oracle

WEBリクエストを送信してレスポンスを表示する

OracleからWEBサイトやWEB APIなどのネットワークサービスを呼び出すには、UTL_HTTPパッケージを使用します。

今回は、UTL_HTTPパッケージを使用して、WEBサイトからのレスポンスを表示する方法を記載します。

環境

Oracle Express Edition 11g R2

UTL_HTTPパッケージとは?

UTL_HTTPパッケージは、SQLとPL/SQLからHypertext Transfer Protocol(HTTP)のコールアウトを行います。これを使用すると、HTTPを経由してインターネット上のデータにアクセスできます。

http://docs.oracle.com/cd/E16338_01/appdev.112/b56262/u_http.htm

パッケージ使用時の注意事項

Oracleではネットワークサービスへのアクセスはデフォルトで無効に設定されており、アクセス制御リスト(ACL)によりネットワークアクセスが拒否されます。

今回のようにWEBサイトにアクセスするためには、まず最初にDBMS_NETWORK_ACL_ADMINパッケージを使用して、ACLを設定する必要があります。

UTL_TCP,UTL_SMTP,UTL_MAILパッケージなどを使用する場合も同じようにACLを設定します

また、今記事のようにOracle Express Editionを使用する場合には、DBAユーザでUTL_HTTPの実行権限を付与する必要があります。

ACLの設定

ユーザにネットワークアクセス権限を付与するには、DBAユーザでACLの作成、アサインを実行します。

Webサイトにアクセスする

次にACLを付与したユーザでログインしてHTTPリクエストを送信します。
REQUESTファンクションを使用して2000バイト分のレスポンスを表示します。

下記のようなレスポンスが表示されることを確認します。

PL/SQLからHTTPリクエストを送信する場合。

下記のようなレスポンスが表示されることを確認します。

全てのレスポンスを取得したい場合は、GET_RESPONSEファンクションを使用します。
GET_RESPONSEで取得したHTTPレスポンスを一行毎表示します。

ACL設定を削除する 

今回作成したACLを削除するにはDBAユーザで下記を実行します。

WEB API、WEBサービスを利用する方法は下記の記事に記載しています。

この記事は、下記のページを参考にして記載しています。

Google AdSense PC

Google AdSense PC

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

  関連記事

sqlserer
[SQL Server]IDENTITYの値を初期化する

ID値の初期化(リセット)方法 IDENTITYプロパティを設定した列のID値を初期化(リセット)する方法を記載します。 現在のID値を確認する ID値を確認す …

sqlserer
[SQLServer]日付文字列 + 時刻文字列をDATETIME型に変換する方法

SQLServerで日付文字列 + 時刻文字列をDATETIME型に変換する方法 日付と時刻を別のカラムに格納している場合に日時データとして扱いたい場合はCON …

sqlserer
[SQLServer]形式指定で日付を取得する方法

SQLServerで形式を指定して日付を取得する 日付形式を指定するために、CONVERT関数、または、FORMAT関数を使用する。CONVERT関数とFORM …

oracle
ODP.NETをNuGetからインストールする

ODP.NETのインストール手順 Oracle 12cから公式のODP.NETがNuGetに追加されました。 この記事ではODP.NETをNuGetからインスト …

oracle
[Oracle]OracleからWebサービスを利用する方法

SOAPリクエストを送信してレスポンスを表示する 前回はOracleからWebサイトにアクセスする方法を記載しましたが、今回はOracleからSOAP形式のWe …

oracle
[Oracle]トリガーの実行順序を設定する方法

FOLLOWS句を使用して実行順序を設定する 1つの表に対して同レベル(タイミング)のトリガーを複数作成することはできますが、実行順序は保証されていません。 実 …

sqlserer
[SQL Server]再帰SQLで集計する

WITH(共通テーブル式)を使って集計する WITH句とは 共通テーブル式 (CTE) は、単一の SELECT、INSERT、UPDATE、DELETE、CR …

oracle
[Oracle]Data Pumpを使用したデータベースのバックアップ

Data Pump機能のexpdp/impdpコマンドを使用するとデータベース全体、スキーマ単位、表単位など対象範囲を指定したバックアップやリストアを行うことが …

sqlserer
[SQL Server]データを期間別に集計する

SQL Serverで集計表を出力 日付をDATETIME型で管理している場合、CONVERT関数、DATEPART関数を使って、日、週、月、年別の集計結果を出 …

oracle
[Oracle]端数処理、丸めの方法

ORACLEで数値の端数処理、数値丸めをする 数値を四捨五入する場合は、ROUND関数数値を切り捨てる場合は、TRUNC関数各関数の第2引数の値で、小数部、また …