實例01 實現一個簡單的Web服務訪問 本實例將實現IP地址查詢介面服務,根據用戶傳入的IP地址返回IP所在的省、市、地區,實例中將會用到IP地址庫用於查詢信息,由於數據較多,所以讀者可在光碟資源文件中直接附加資料庫文件,這裡將不再介紹導入數據的過程。 程式實現步驟如下: (1)打開Visual S ...
實例01 實現一個簡單的Web服務訪問
本實例將實現IP地址查詢介面服務,根據用戶傳入的IP地址返回IP所在的省、市、地區,實例中將會用到IP地址庫用於查詢信息,由於數據較多,所以讀者可在光碟資源文件中直接附加資料庫文件,這裡將不再介紹導入數據的過程。
程式實現步驟如下:
(1)打開Visual Studio 2017開發環境,然後依次點擊文件→新建→項目,在彈出的新建項目對話框中選擇“ASP.NET Web應用程式”選項,然後更改項目名稱和項目路徑,如圖12.1所示。
圖12.1 新建ASP.NET Web應用程式
(2)單擊“確定”按鈕,將彈出選擇項目類型對話框,在該對話框中可選擇Web Forms或MVC等項目類型,這裡選擇“Empty”空項目類型,然後點擊確定按鈕,如圖12.2所示。
圖12.2 創建空項目
(3)Ip地址查詢功能的條件屬於IP地址段範圍查找,所以在進行篩選時通常要將IP地址轉換成Int類型,這樣做是方便於數據的範圍篩選,所以接下來定義IP地址的數據類型轉換方法,代碼如下:
01 privatelong IPToNumber(string ip)//定義IP轉Int方法,參數ip為用戶要查詢的ip地址
02 {
03 try
04 {
05 char[] separator = newchar[] { '.' };//定義char類型的分割數組
06 string[] items = ip.Split(separator); //將ip字元串以“.”進行分割並返回數組
07 //將ip地址的每一段拆分成二進位形式,然後再將二進位轉換成無符號的32位整數
08 returnlong.Parse(items[0]) << 24 | long.Parse(items[1]) << 16
09 | long.Parse(items[2]) << 8 | long.Parse(items[3]);
10 }
11 catch
12 {
13 return 0;//如果發生異常則返回0
14 }
15 }
(4)接著定義獲取IP地址的公開方法,該方法將帶有一個字元串類型的參數,參數表示用戶要查詢地區的IP地址,代碼如下:
01 [WebMethod(Description = "IP地址歸屬地查詢")]
02 publicstringGetIPToArea (string ip)
03 {
04 long IP = IPToNumber(ip);//傳入string類型的ip地址,返回long類型的ip地址
05 //創建資料庫連接對象
06 SqlConnection conn =
07 newSqlConnection("Server=127.0.0.1;Database=School;Uid=sa;Pwd=123456");
08 conn.Open(); //打開資料庫
09 DataSet ds = newDataSet(); //定義DataSet
10 //創建數據適配器
11 SqlDataAdapter sda =
12 newSqlDataAdapter("select * from IpAddress where IP1<=" + IP + " and IP2>=" + IP, conn);
13 sda.Fill(ds); //填充DataSet
14 conn.Dispose(); //釋放資料庫使用資源
15 DataTable dt = ds.Tables[0];//返回查詢的數據表
16 if (dt.Rows.Count > 0) //判斷如果數據總數大於0
17 {
18 string Province = (string)dt.Rows[0]["Province"];//獲取省
19 string City = (string)dt.Rows[0]["City"]; //獲取市
20 return ip + ","+Province + "," + City; //將ip地址與省和市拼接然後返回
21 }
22 return"未找到IP地址所對應的地區信息"; //返回無數據信息
23 }
代碼完成之後,接下就是調用這個服務,首先運行這個服務頁面,這與運行Web頁面相同,在彈出來的網頁中包含了對於這個服務頁面的說明,其中頁面上有兩個可點擊的連接,該連接對應的是服務中定義的方法名稱,一個是剛纔定義GetIPToArea方法,並且帶有方法描述信息,另一個則是創建服務頁面時自動生成的測試方法,這裡直接點擊GetIPToArea方法連接,如圖12.3所示。
圖12.3 Web服務幫助頁面
點擊之後頁面會跳轉到可對該方法執行調用的頁面,這個頁面幫助我們可以很方便的測試創建的服務。在頁面上有一個文本框用於輸入方法的參數值,並且下麵還有一個“調用”按鈕,當用戶輸入完參數值後,點擊“調用”按鈕即可執行服務程式然後等待返回結果,如圖12.4所示。
圖12.4 Web服務調用頁面
最後調用結果將會以彈出新的視窗來顯示,如圖12.5所示。
圖12.5 GetIPToArea方法返回的結果頁面
從上面的測試結果可以看出,Web服務的方法的返回結果是使用XML進行編碼的。
實例02 實現區域網內的Web服務訪問
在本地環境下可通過將Web服務發佈到IIS中,在進行調用者的訪問。本實例將實現如何在本地環境下進行調用Web服務。
(1)首先打開IIS管理工具,在IIS管理工具中“網站”的節點下創建一個網站,目錄指定已經編寫好的Web服務應用程式文件夾,然後命名網站名稱並分配IP地址和埠號。這個過程同創建網站站點相同,最後點擊“確定”按鈕完成創建,如圖12.6所示。
圖12.6 發佈Web服務到IIS
圖12.6中創建的Web服務站點指定目錄為實例01中創建的的Web服務引用程式,所以接下來在創建一個網站程式用於調用Web服務,該過程主要演示如何添加“服務引用”的操作。
(2)首先新建一個網站並創建Default.aspx頁面,在頁面中添加一個TextBox控制項、一個Button控制項和兩個Label控制項,分別用來輸入IP地址、執行查詢操作和顯示結果信息。
(3)在項目上單擊滑鼠右鍵,在彈出的快捷菜單中選擇“添加”→“服務引用”選項,彈出“添加服務引用”對話框,如圖12.7所示。
圖12.7 “添加服務引用”對話框
(4)引用添加完成之後,將在“解決方案資源管理器”中添加一個名為App_WebReferences的目錄,在該目錄中將顯示命名空間為ServiceReference1的服務,如圖12.8所示。
圖12.8 添加的ServiceReference1服務
(5)在Default.aspx頁的“查詢IP地址”按鈕控制項的Click事件中,通過調用服務對象的GetIPToArea方法查詢信息,代碼如下:
24 protectedvoid Button1_Click(object sender, EventArgs e)
25 {
26 ServiceReference1.WebService1SoapClient webService1SoapClient =
27 new ServiceReference1.WebService1SoapClient();
28 string Result = webService1SoapClient.GetIPToArea(this.TextBox1.Text);
29 while (Result.IndexOf(",") > -1)
30 {
31 Result = Result.Replace(",", "<br/>");
32 }
33 this.Label1.Text = "以下為輸出IP、省、市的結果:";
34 this.Label2.Text = Result;
35 }
運行Default.aspx頁面,在文本框中輸入一個有效的IP地址,然後點擊“查詢IP地址”按鈕,頁面將會輸出查詢到的結果信息,如圖12.9所示。
圖12.9 調用Web服務結果
本文摘自明日科技出版的《零基礎學ASP.NET》,轉載請註明出處!!!