程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> 關於.NET >> 訂閱 GeoRSS 訂閱源

訂閱 GeoRSS 訂閱源

編輯:關於.NET

在此練習中,您將在 ASP.Net Web 應用程序中實現 HTTP 處理程序以返回 GeoRSS 訂閱源。GeoRSS 是在 RSS 訂閱源中包含地理空間數據時所用的一個標准,它定義了一種名為 GeoRSS GML 的特定格式,用來在訂閱源中包含 GML 格式的數據。客戶端應用程序可以訂閱 GeoRSS 訂閱源,訂閱方式與訂閱常規 RSS 訂閱源相同。可以輕松地將 GeoRSS 格式的數據導入 Microsoft Virtual Earth VEMap 控件中。

注意:您可以從 C:\SQLHOLS\Spatial and VE\Solution\StoreFinderSite 中的完成的網站頁面復制此練習中所用的代碼。

實現 HTTP 處理程序

1. 啟動 Microsoft Visual Studio 2008。

2. 在文件菜單中,單擊打開網站,然後打開 C:\SQLHOLs\Spatial and VE\Starter\StoreFinderSite 網站。

3. 在解決方案資源管理器中,展開 App_Code,然後雙擊 GeoRSSHandler.vb 在代碼編輯器中打開它。

注意:HTTP 處理程序是一個代碼模塊,用於處理對 Web 應用程序的 HTTP 請求。通常由默認 ASP.NET 請求處理程序處理對 ASP.Net Web 應用程序的請求,但是您可以針對特定文件擴展名創建自定義處理程序。在本例中,您將實現一個將用於處理擴展名為 .georss 的文件的請求的處理程序。

4. 檢查現有的代碼。處理傳入請求的過程名為 ProcessRequest。請注意,此過程不完整,包含大量必須添加代碼的注釋。

5. 在注釋 Build the GeoRSS feed下,添加以下代碼,以開始構建將由 HTTP 處理程序返回的 GeoRSS 訂閱源。

以下為引用的內容:

rssOutput.AppendLine("  
rssOutput.AppendLine("XMLns:georss='http://www.georss.org/georss'"
)  
rssOutput.AppendLine("XMLns:gml='http://www.opengis.Net/gml'>"
)  
rssOutput.AppendLine(""
)  
rssOutput.AppendLine("Store Locations"
)  
rssOutput.AppendLine(""
)  
rssOutput.AppendLine("" + System.DateTime.Now + ""
)  
rssOutput.AppendLine(""
)  
rssOutput.AppendLine("SQL Server"
)  
rssOutput.AppendLine("")
 

6. 在注釋 Open a connection to the database下,添加以下代碼。

以下為引用的內容:

sqlConn.Open() 

7. 在注釋 Use the GetStoresGML stored proc to get all stores by default下,添加以下代碼。

以下為引用的內容:

spName = "GetStoresGML" 

注意:默認情況下,對此 HTTP 處理程序的請求將調用 GetStoresGML 存儲過程,並返回包含所有商店的 GeoRSS 訂閱源。

8. 在注釋If a searchFrom parameter is provided, use GetNearbyStores and add the provided lat and lon coordinates as parameters下,添加以下代碼。

以下為引用的內容:

Dim searchFrom As String = context.Request.QueryString("SearchFrom")  
If Not searchFrom Is Nothing Then  
spName = "GetNearbyStoresGML"
 
Dim latLong() As String = Split
(searchFrom, ",", 2)  
cmd.Parameters.Add(New SqlParameter("Lat", latLong(0)))  
cmd.Parameters.Add(New SqlParameter("Long", latLong(1)))  
End If
 

注意:如果請求包含名為 SearchFrom 的參數(假定它包含以逗號分隔的緯度和經度坐標對),處理程序將從此參數提取緯度和經度值,並使用 GetNearbyStoresGML 存儲過程返回 GeoRSS 訂閱源,訂閱源中包含請求的搜索點周圍方圓 100 km 范圍內的商店。

9. 在注釋 Specify the stored procedure name as the command text(將存儲過程名稱指定為命令文本)下,添加以下代碼。

以下為引用的內容:

cmd.CommandText = spName 

10. 在注釋 Create an element for this row下,添加以下代碼來為存儲過程的結果中的每一行都創建一個 標記。

以下為引用的內容:

rssOutput.AppendLine("") 

11. 在注釋 Use columns 0 and 1 for the title and description下,添加以下代碼以根據存儲過程返回的數據創建 ", geomRdr.GetValue(0)))

以下為引用的內容:

rssOutput.AppendLine(String.Format("{0}", _  
geomRdr.GetValue(1))) 

12. 在注釋 Add a element下,添加以下代碼來為此條目創建 元素。

以下為引用的內容:

rssOutput.AppendLine("") 

13. 在注釋 Get the geography instance GML from column 2下,添加以下代碼,以從存儲過程結果中檢索 GML 數據。

以下為引用的內容:

gml = geomRdr.GetValue(2).ToString() 

14. 在注釋 Add the elements to the output XML下,添加以下代碼以向 GeoRSS 訂閱源添加 GML 數據。

以下為引用的內容:

rssOutput.AppendLine(gml) 

15. 在注釋 Close and elements下,添加以下代碼。

以下為引用的內容:

rssOutput.AppendLine("")  
rssOutput.AppendLine("") 

16. 在注釋 Close the document and send it as the response下,添加以下代碼以完成 GeoRSS 訂閱源並將其發送給請求人。

以下為引用的內容:

rssOutput.Append("")  
context.Response.Write(rssOutput.ToString())
 

17. 保存 GeoRSSHandler.vb。

注冊 HTTP 處理程序

1. 在解決方案資源管理器中,雙擊 web.config 在編輯器中打開它。

2. 在 部分中,在注釋 Register the GeoRSSHandler for .georss requests下,添加以下 XML。

以下為引用的內容:

<add verb="*" path="*.georss" type="GeoRSSHandler" validate="false"/> 

注意:您必須為特定文件擴展名注冊 HTTP 處理程序,以便 Internet Information Services 將針對這些文件的請求轉發到正確的處理程序。

3. 保存 web.config。

測試 HTTP 處理程序

1. 在解決方案資源管理器中,單擊位於樹的根目錄下的網站項目文件,然後按 F4 查看其屬性。

2. 請注意觀察端口號屬性。

3. 在網站菜單上,單擊啟動選項。

4. 選擇啟動 URL,輸入以下 URL(將 port 替換為網站的端口號屬性的值),然後單擊確定。

http://localhost:/storefindersite/test.georss

5. 在調試菜單上,單擊開始執行(不調試)。

6. 當 Microsoft Internet Explorer ® 打開時,查看包含商店名稱的 RSS 訂閱源的頁面。

7. 在 Internet Explorer 中,右鍵單擊該網頁的任意位置,然後單擊查看源文件以在記事本中打開該頁的源文件。請注意,該頁的源是您前面創建的 HTTP 處理程序生成的 GeoRSS 訂閱源。

8. 關閉記事本。

9. 在 Internet Explorer 中的地址欄中,將以下查詢字符串附加到 URL 後,然後按 Enter。

?SearchFrom=34.000000,-118.000000

10. 驗證生成的 GeoRSS 訂閱源包含搜索區域及其中的所有商店。

11. 關閉 Internet Explorer。 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved