您好,登錄后才能下訂單哦!
這篇文章主要為大家展示了“如何通過(guò)Web Service實(shí)現(xiàn)IP地址查詢功能”,內(nèi)容簡(jiǎn)而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“如何通過(guò)Web Service實(shí)現(xiàn)IP地址查詢功能”這篇文章吧。
實(shí)例01 實(shí)現(xiàn)一個(gè)簡(jiǎn)單的Web服務(wù)訪問(wèn)
本實(shí)例將實(shí)現(xiàn)IP地址查詢接口服務(wù),根據(jù)用戶傳入的IP地址返回IP所在的省、市、地區(qū),實(shí)例中將會(huì)用到IP地址庫(kù)用于查詢信息,由于數(shù)據(jù)較多,所以讀者可在光盤(pán)資源文件中直接附加數(shù)據(jù)庫(kù)文件,這里將不再介紹導(dǎo)入數(shù)據(jù)的過(guò)程。
程序?qū)崿F(xiàn)步驟如下:
(1)打開(kāi)Visual Studio 2017開(kāi)發(fā)環(huán)境,然后依次點(diǎn)擊文件→新建→項(xiàng)目,在彈出的新建項(xiàng)目對(duì)話框中選擇“ASP.NET Web應(yīng)用程序”選項(xiàng),然后更改項(xiàng)目名稱和項(xiàng)目路徑,如圖12.1所示。
圖12.1 新建ASP.NET Web應(yīng)用程序
(2)單擊“確定”按鈕,將彈出選擇項(xiàng)目類(lèi)型對(duì)話框,在該對(duì)話框中可選擇Web Forms或MVC等項(xiàng)目類(lèi)型,這里選擇“Empty”空項(xiàng)目類(lèi)型,然后點(diǎn)擊確定按鈕,如圖12.2所示。
圖12.2 創(chuàng)建空項(xiàng)目
(3)Ip地址查詢功能的條件屬于IP地址段范圍查找,所以在進(jìn)行篩選時(shí)通常要將IP地址轉(zhuǎn)換成Int類(lèi)型,這樣做是方便于數(shù)據(jù)的范圍篩選,所以接下來(lái)定義IP地址的數(shù)據(jù)類(lèi)型轉(zhuǎn)換方法,代碼如下:
privatelong IPToNumber(string ip)//定義IP轉(zhuǎn)Int方法,參數(shù)ip為用戶要查詢的ip地址 { try { char[] separator = newchar[] { '.' };//定義char類(lèi)型的分割數(shù)組 string[] items = ip.Split(separator); //將ip字符串以“.”進(jìn)行分割并返回?cái)?shù)組 //將ip地址的每一段拆分成二進(jìn)制形式,然后再將二進(jìn)制轉(zhuǎn)換成無(wú)符號(hào)的32位整數(shù) returnlong.Parse(items[0]) << 24 | long.Parse(items[1]) << 16 | long.Parse(items[2]) << 8 | long.Parse(items[3]); } catch { return 0;//如果發(fā)生異常則返回0 } }
(4)接著定義獲取IP地址的公開(kāi)方法,該方法將帶有一個(gè)字符串類(lèi)型的參數(shù),參數(shù)表示用戶要查詢地區(qū)的IP地址,代碼如下:
[WebMethod(Description = "IP地址歸屬地查詢")] publicstringGetIPToArea (string ip) { long IP = IPToNumber(ip);//傳入string類(lèi)型的ip地址,返回long類(lèi)型的ip地址 //創(chuàng)建數(shù)據(jù)庫(kù)連接對(duì)象 SqlConnection conn = newSqlConnection("Server=127.0.0.1;Database=School;Uid=sa;Pwd=123456"); conn.Open(); //打開(kāi)數(shù)據(jù)庫(kù) DataSet ds = newDataSet(); //定義DataSet //創(chuàng)建數(shù)據(jù)適配器 SqlDataAdapter sda = newSqlDataAdapter("select * from IpAddress where IP1<=" + IP + " and IP2>=" + IP, conn); sda.Fill(ds); //填充DataSet conn.Dispose(); //釋放數(shù)據(jù)庫(kù)使用資源 DataTable dt = ds.Tables[0];//返回查詢的數(shù)據(jù)表 if (dt.Rows.Count > 0) //判斷如果數(shù)據(jù)總數(shù)大于0 { string Province = (string)dt.Rows[0]["Province"];//獲取省 string City = (string)dt.Rows[0]["City"]; //獲取市 return ip + ","+Province + "," + City; //將ip地址與省和市拼接然后返回 } return"未找到IP地址所對(duì)應(yīng)的地區(qū)信息"; //返回?zé)o數(shù)據(jù)信息 }
代碼完成之后,接下就是調(diào)用這個(gè)服務(wù),首先運(yùn)行這個(gè)服務(wù)頁(yè)面,這與運(yùn)行Web頁(yè)面相同,在彈出來(lái)的網(wǎng)頁(yè)中包含了對(duì)于這個(gè)服務(wù)頁(yè)面的說(shuō)明,其中頁(yè)面上有兩個(gè)可點(diǎn)擊的連接,該連接對(duì)應(yīng)的是服務(wù)中定義的方法名稱,一個(gè)是剛才定義GetIPToArea方法,并且?guī)в蟹椒枋鲂畔ⅲ硪粋€(gè)則是創(chuàng)建服務(wù)頁(yè)面時(shí)自動(dòng)生成的測(cè)試方法,這里直接點(diǎn)擊GetIPToArea方法連接,如圖12.3所示。
圖12.3 Web服務(wù)幫助頁(yè)面
點(diǎn)擊之后頁(yè)面會(huì)跳轉(zhuǎn)到可對(duì)該方法執(zhí)行調(diào)用的頁(yè)面,這個(gè)頁(yè)面幫助我們可以很方便的測(cè)試創(chuàng)建的服務(wù)。在頁(yè)面上有一個(gè)文本框用于輸入方法的參數(shù)值,并且下面還有一個(gè)“調(diào)用”按鈕,當(dāng)用戶輸入完參數(shù)值后,點(diǎn)擊“調(diào)用”按鈕即可執(zhí)行服務(wù)程序然后等待返回結(jié)果,如圖12.4所示。
圖12.4 Web服務(wù)調(diào)用頁(yè)面
最后調(diào)用結(jié)果將會(huì)以彈出新的窗口來(lái)顯示,如圖12.5所示。
圖12.5 GetIPToArea方法返回的結(jié)果頁(yè)面
從上面的測(cè)試結(jié)果可以看出,Web服務(wù)的方法的返回結(jié)果是使用XML進(jìn)行編碼的。
實(shí)例02 實(shí)現(xiàn)局域網(wǎng)內(nèi)的Web服務(wù)訪問(wèn)
在本地環(huán)境下可通過(guò)將Web服務(wù)發(fā)布到IIS中,在進(jìn)行調(diào)用者的訪問(wèn)。本實(shí)例將實(shí)現(xiàn)如何在本地環(huán)境下進(jìn)行調(diào)用Web服務(wù)。
(1)首先打開(kāi)IIS管理工具,在IIS管理工具中“網(wǎng)站”的節(jié)點(diǎn)下創(chuàng)建一個(gè)網(wǎng)站,目錄指定已經(jīng)編寫(xiě)好的Web服務(wù)應(yīng)用程序文件夾,然后命名網(wǎng)站名稱并分配IP地址和端口號(hào)。這個(gè)過(guò)程同創(chuàng)建網(wǎng)站站點(diǎn)相同,最后點(diǎn)擊“確定”按鈕完成創(chuàng)建,如圖12.6所示。
圖12.6 發(fā)布Web服務(wù)到IIS
圖12.6中創(chuàng)建的Web服務(wù)站點(diǎn)指定目錄為實(shí)例01中創(chuàng)建的的Web服務(wù)引用程序,所以接下來(lái)在創(chuàng)建一個(gè)網(wǎng)站程序用于調(diào)用Web服務(wù),該過(guò)程主要演示如何添加“服務(wù)引用”的操作。
(2)首先新建一個(gè)網(wǎng)站并創(chuàng)建Default.aspx頁(yè)面,在頁(yè)面中添加一個(gè)TextBox控件、一個(gè)Button控件和兩個(gè)Label控件,分別用來(lái)輸入IP地址、執(zhí)行查詢操作和顯示結(jié)果信息。
(3)在項(xiàng)目上單擊鼠標(biāo)右鍵,在彈出的快捷菜單中選擇“添加”→“服務(wù)引用”選項(xiàng),彈出“添加服務(wù)引用”對(duì)話框,如圖12.7所示。
圖12.7 “添加服務(wù)引用”對(duì)話框
(4)引用添加完成之后,將在“解決方案資源管理器”中添加一個(gè)名為App_WebReferences的目錄,在該目錄中將顯示命名空間為ServiceReference1的服務(wù),如圖12.8所示。
圖12.8 添加的ServiceReference1服務(wù)
(5)在Default.aspx頁(yè)的“查詢IP地址”按鈕控件的Click事件中,通過(guò)調(diào)用服務(wù)對(duì)象的GetIPToArea方法查詢信息,代碼如下:
protectedvoid Button1_Click(object sender, EventArgs e) { ServiceReference1.WebService1SoapClient webService1SoapClient = new ServiceReference1.WebService1SoapClient(); string Result = webService1SoapClient.GetIPToArea(this.TextBox1.Text); while (Result.IndexOf(",") > -1) { Result = Result.Replace(",", "<br/>"); } this.Label1.Text = "以下為輸出IP、省、市的結(jié)果:"; this.Label2.Text = Result; }
運(yùn)行Default.aspx頁(yè)面,在文本框中輸入一個(gè)有效的IP地址,然后點(diǎn)擊“查詢IP地址”按鈕,頁(yè)面將會(huì)輸出查詢到的結(jié)果信息,如圖12.9所示。
以上是“如何通過(guò)Web Service實(shí)現(xiàn)IP地址查詢功能”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。