2017-01-07 9 views
1

GoogleのGeoCode APIを使用して、ユーザーが検索ボックスに入力したアドレスの緯度/経度の値を返すように取り組んでいます。私のコードは正しいようですが、セキュリティ例外の問題が発生しています。また、私がFiddlerを使って呼び出しを確認すると、呼び出しを見ることができますが、clientaccesspolicy.xmlに問題があります。clientaccesspolicy.xmlが見つからない404 in Fiddler

私のWPFアプリケーションは、Googleにclientaccesspolicy.xmlを必要としているようですが、Googleにはこれがありません。だから私はGoogleのAPIへのこの呼び出しを行うためにプロキシする必要があるかもしれません。任意のアイデアや回避策?

コード

private void RequestResponseHandler(IAsyncResult asyncResult) 
{ 
    HttpWebResponse response = null; 
    Stream responseStream = null; 
    try 
    { 
     response = (HttpWebResponse)request.EndGetResponse(asyncResult); 
     responseStream = response.GetResponseStream(); 
     var xdoc = XDocument.Load(responseStream); 
    } 
    catch (Exception ex) 
    { 
     MessageBox.Show(ex.Message); 
    } 
} 

フィドラー enter image description here enter image description here

答えて

1

私の知る限り理解し、あなたがクロスドメインリクエストについてかなりうるさいですSilverlightアプリケーションでこのコードを使用します。リクエストを実行する前にSilverlightランタイムはターゲットサーバー(maps.googleapis.comの場合)にclientaccesspolicy.xmlを見つけようとしますが、失敗した場合はcrossdomain.xmlを探します。どうやら、サーバーにはそのようなファイルがないため、ランタイムはSecurityExceptionをスローします。

GoogleマップAPIにリクエストをプロキシすることができます回避策として:あなたのSilverlightアプリケーションは、アプリケーション(および対応するclienataccesspolicy.xml)

  • あなたのWebサーバが要求を受け入れることをホストするサーバーにリクエストを送信し

    • それをGoogle APIに再送信し、APIの応答をアプリケーションに返します。
  • +0

    WebサーバーにWCFサービスを作成し、イベントハンドラのコードをサービスのメソッドの1つに入れることができます。 Silverlighアプリケーションにサービスをインポートし、そのメソッドをイベントハンドラから呼び出します。 –