2012-03-06 12 views
1

私はasp.netアプリケーションからopenstreetmapジオコーディングサービスを使用してジオコードを作成しようとしています。asp.netのhttpリクエストからXMLを取得する最も良い方法は?

OSMジオコーディングサービスは、URLクエリ文字列と呼ばれます。これはウェブサイトの例です。

http://nominatim.openstreetmap.org/search?q=135+pilkington+avenue,+birmingham&format=xml&polygon=1&addressdetails=1 

このアドレスはXMLを返します。

私は、XMLデータを取得するための最良の(ベストプラクティス?)方法を探しています。私は意味する:

Dim MyXMLStringResponse as string 
dim MyParametricURL as string 

MyParametricURL="http://nominatim.openstreetmap.org/search?q=" & myaddress & "&format=xml&polygon=1&addressdetails=1" 

MyXMLStringResponse = SomeObjectOrFunction.SomeMethod(MyParametricURL) 

私が探しているのは、 "SomeObjectOrFunction"または "SomeMethod"という文字列XMLを取得することです。

nominatim.openstreetmap.orgはWebサービスではありません。

+0

は、クエリ文字列にXMLを置くように注意してください。長さの問題にぶつかることができます。 http://stackoverflow.com/questions/417142/what-is-the-maximum-length-of-a-url – Khan

+0

ありがとうございましたJeff、しかし、私はクエリ文字列にXMLを入れていません。 "myaddress"はアドレスを持つ単なるテキストです。 URLはXMLを返し、私はそれを呼び出す最善の方法を探しています。よろしく。 – Leo

+0

クエリ文字列でxml応答を受け取るためにaspectを使用するのはなぜですか?一般的にHttpResponseです。 StreamReaderでアクセスできます: 'StreamReader(httpResponse.GetResponseStream()));'。 [ここ](http://social.msdn.microsoft.com/Forums/en-US/netfxbcl/thread/046b0d08-a19e-4b07-9452-f587e2903307/)を参照してください。 –

答えて

1

簡単な方法では、WebClientクラスを使用してリクエストを送信します。

これはMSDNからのデモコードのトリミングバージョンです:

 WebClient client = new WebClient(); 

     // Add a user agent header in case the 
     // requested URI contains a query. 

     client.Headers.Add ("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)"); 

     Stream data = client.OpenRead ("http://nominatim..."); 
     StreamReader reader = new StreamReader (data); 
     string xml = reader.ReadToEnd(); 

     // "xml" now contains the response in string format 
     // Do whatever (load in XmlDocument, for example) 

     // close connection 
     data.Close(); 
     reader.Close(); 
+0

ありがとうございます!これだよ。 – Leo

関連する問題