2017-01-06 8 views
0

リクエストが正しく機能していません。私は検索ボタンを備えた検索ボックスを持っています。ユーザーは検索ボックスにアドレスを入力すると、アドレスがGoogleのAPIから送信されます。しかし、何らかの理由でこれが機能していません。なぜ誰が知っていますか?また、デバッグ時にrequestという値が表示されます。Google API WebRequestが機能しない

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

+0

あなたはこのリクエストに何か問題があると思いますか?期待されるものは何ですか?実際の結果は何ですか?また、APIキーを公開しない方がよいでしょう。 –

+0

これらの3つの例外をデバッグすると 'response'があり、' RequestResponseHandler'に入り、 'response =(HttpWebResponse)request.EndGetResponse(asyncResult); 'でブレークします。私はまた、その写真を共有することもできます。 – daveskylark

+0

これらの例外は完全に正常です。あなたのコードの本当の問題については私の答えを見てください。 –

答えて

1

ジオコードAPIは、JSONを返します。例: https://maps.googleapis.com/maps/api/geocode/json?address=fifth%20avenue&key=AIzaSyCgsNpuUoH7m6U7lqeZjlLZ3MgM15PW15o

しかし、ここでは、XML文書の中に、このJSONを入れしようとしている。

var xdoc = XDocument.Load(responseStream); 

私が代わりにJSONパーサーを使用して、あなたをお勧めします。

あなたが実際の例外を示していることが今では(シルバー?)環境で作業していると思われますが、クロスドメインのリソースにアクセスする権限がありません。

enter image description here

このため、Security Errorが届いています。実際の環境に応じて、この問題を解決するさまざまな方法があります。たとえばSilverlightでは、クロスドメインコールを行うためにinclude a clientaccesspolicy.xmlファイルが必要な場合があります。このファイルでは、HTTP要求を行う必要があるドメイン(あなたの場合はmaps.googleapis.com)を明示的に許可する必要があります。

+0

私は、例uriで 'json'をxmlに変更することができます。しかし、それは問題を解決しません。 – daveskylark

+0

私は、 'request.EndGetResponse'行が壊れていると言ったとき、正確な例外は何に投げられるのですか?それは 'catch'節に入っていますか? –

+0

私は別の写真を追加しました。最初の行に当たってからcatch節に入ります。 – daveskylark

関連する問題