Web アプリケーションでのプロキシの使用

このセクションでは、Web アプリケーションでプロキシを使用する方法について説明します。

ria.js をインポートする

最初の手順は、OpenLayers とメインの JavaScript API ライブラリをインポートすることです。これを行うには、次の手順を実行します。


<script type="text/javascript" src="http://<server>:<port>/ria/openlayers/OpenLayers.js"></script>			
<script type="text/javascript" src="http://<server>:<port>/ria/ria.js"></script>
			

localhost:8080 を、JavaScript API をインストールする実際のホスト名とポート番号で置き換えます。

Web アプリケーションにおいて JavaScript API コンポーネントを公開するには、ダウンロードするすべての javascript リソースが一般アクセス可能な URL になければなりません (また、これらの js ファイル内の URL もすべて、一般アクセス可能でなければなりません)。

プロキシへのパスを定義する

クロスドメイン呼び出しをプロキシ経由でルーティングするように指示するには、プロキシへのパスを次のように登録する必要があります。


ria.RestService.addProxy("/riaproxy/?url=");
			

JavaScript ライブラリ コードは、別のドメインへの URL を直接呼び出すのではなく、上で登録されたパスの末尾にエンコーディングされた URL を追加し、その結果を使用してリクエストを実行します。プロキシは、要求パラメータ (デフォルトでは url) から URL を取得し、URL に関連付けられたリソースを要求して、結果を変更することなく JavaScript ライブラリ コードに返送します。addProxy() メソッドに渡される完全なパスは、使用するプロキシ、およびプロキシの展開方法によって異なります。

注: 上記のパスは、Java Servlet プロキシのデフォルトです。IIS プロキシの場合は、パス /riaproxy/Proxy.aspx?url= を使用します。

コード サンプル

フィーチャ検索を実行するための簡単なページは次のとおりです。


<!DOCTYPE html>
<html>
    <head>
        <script src="http://<server>:<port>/ria/openlayers/OpenLayers.js"></script>
        <script src="http://<server>:<port>/ria/ria.js"></script>
    </head>
    <body>
        <button onclick="search();">Search</button>
        <script>
			ria.RestService.addProxy("/riaproxy/?url=");
            function search() {
                var fs = new ria.search.FeatureService(
                        "http://<server>:<port>/rest/Spatial/FeatureService");
                var d = fs.searchNearest({
                    table: "/Samples/NamedTables/WorldcapTable",
                    geometry: new OpenLayers.Geometry.Point(12.875977, 47.813155),
                    srs: "epsg:4326",
                    attributes: ["Capital"],
                    withinDistance: "2000 mi",
                    distanceAttributeName: "dist",
                    maxFeatures: 10
                });
                d.addCallback(function(result) {alert(result.features.length + " result(s)")});
            }
        </script>       
    </body>
</html
			

このサンプル Web アプリケーションをブラウザに表示し、[検索] をクリックすることによって、テストします。

フィーチャー検索結果を表示するダイアログが表示されます。

Fiddler などの Web デバッガで、10 件の検索結果の一覧を参照できます。

{"type":"FeatureCollection","Metadata":[{"type":"String","name":"Capital"},
{"type":"Double","name":"dist"}],"features":[{"type":"Feature","properties"
:{"Capital":"Ljubljana","dist":143.84489998699985}},{"type":"Feature","properties" 
:{"Capital":"Vienna","dist":161.4848812627603}},{"type":"Feature","properties"
:{"Capital":"Vaduz","dist":163.332701859974}},{"type":"Feature","properties"
:{"Capital":"Prague","dist":173.87473824107374}},{"type":"Feature","properties"
:{"Capital":"Bratislava","dist":198.09553406882614}},{"type":"Feature","properties"
:{"Capital":"Zagreb","dist":201.31855154101802}},{"type":"Feature","properties"
:{"Capital":"Bern","dist":260.92616074609}},{"type":"Feature","properties"
:{"Capital":"San Marino","dist":267.4791030110629}},{"type":"Feature","properties"
:{"Capital":"Budapest","dist":290.00905102083885}},{"type":"Feature","properties"
:{"Capital":"Berlin","dist":325.56576583498344}}]}

.NET プロキシのトラブルシューティング

例外がリモート サービス リクエストから発生した場合や、認証に問題がある場合は、HTTP ステータス コード、説明、ヘッダ、URL、および HTML 本文 (利用可能な場合) がイベント ログに挿入されます。このログは、Microsoft イベント ビューアに "Pitney Bowes Proxy Service" と表示されます。