2017-01-06 7 views
0

Google Googles APIへのリクエストを作成しようとしています。しかし、GetResponse()でエラーが発生しています。私は取得していますエラーが...'WebRequest'のためのGetResponse()エラー

'WebRequest' does not contain a definition for 'GetResponse'...

Visual Studioは、私にBeginGetResponse()でそれを置き換えるためのオプションを与えているが、私は、コードをフォーマットするか、私はすでにこれを達成するために持っているものに変更するかどうかはわかりません。誰でもこれを解決するための方向へ私を向けることができますか?私はいくつかのアセンブリを逃している可能性があります...しかし、私はないと思います。

private void FinishWebRequest(IAsyncResult result) 
{ 
    var request = (HttpWebRequest)result.AsyncState; 
    using (var response = request.EndGetResponse(result)) 
    using (var responseStream = response.GetResponseStream()) 
    { 
     var xdoc = XDocument.Load(responseStream); 
     ... 
    } 
} 

場合や:リモートサーバが応答を送信した後

var request = WebRequest.Create(requestUri); 
request.BeginGetResponse(this.FinishWebRequest, request); 

、次に呼び出されるFinishWebRequest方法があります:

private void SearchButton_Click(object sender, RoutedEventArgs e) 
    {  
     var address = addressInput.Text; 
     var requestUri = string.Format("https://maps.googleapis.com/maps/api/geocode/json?address={0}&sensor=false", Uri.EscapeDataString(address)); 

     MessageBox.Show(requestUri.ToString()); 


     var request = WebRequest.Create(requestUri); 
     var response = request.GetResponse(); 
     var xdoc = XDocument.Load(response.GetResponseStream());  

     var result = xdoc.Element("GeocodeResponse").Element("result"); 
     var locationElement = result.Element("geometry").Element("location"); 
     var lat = locationElement.Element("lat"); 
     var lng = locationElement.Element("lng"); 
} 
+0

キャストしよう、(HttpWebResponse)request.GetResponse(); – Ferryzijl

+0

私はそれを試み、GetResponse()はまだ互換性がありません。 – daveskylark

+0

あなたはどのようなアプリケーションを書いていますか? –

答えて

2

は、あなたは、このような非同期バージョンを使用することができます匿名の方法を使用することをお勧めします。

var request = WebRequest.Create(requestUri); 
request.BeginGetResponse(result => 
{ 
    using (var response = request.EndGetResponse(result)) 
    using (var responseStream = response.GetResponseStream()) 
    { 
     var xdoc = XDocument.Load(responseStream); 
     ... 
    } 
}, null); 
+0

'BeginGetResponseStream'メソッドを用意する必要はありませんか? – daveskylark

+0

はい、私の例に示すように、必要があります: 'response.BeginGetResponseStream(this.FinishGetResponseStream、response);'。 'FinishWebRequest'コールバックでレスポンスオブジェクトを取得した後、' FinishGetResponseStream'コールバックで最後の 'Stream'オブジェクトをフェッチできるようにするために、' BeginGetResponseStream'を実行します。 –

+0

いくつかのヒントはありますか?コンパイル時エラー?ランタイムエラー?他に何か? –

関連する問題