java webservice ip_通過Web Service實現IP地址查詢功能的示例

實例01 實現一個簡單的Web服務訪問

本實例將實現IP地址查詢接口服務,根據用戶傳入的IP地址返回IP所在的省、市、地區,實例中將會用到IP地址庫用于查詢信息,由于數據較多,所以讀者可在光盤資源文件中直接附加數據庫文件,這里將不再介紹導入數據的過程。

程序實現步驟如下:

(1)打開Visual Studio 2017開發環境,然后依次點擊文件→新建→項目,在彈出的新建項目對話框中選擇“ASP.NET Web應用程序”選項,然后更改項目名稱和項目路徑,如圖12.1所示。

dce3dfc867dff5cf54e63424d5c30ad2.png

圖12.1 新建ASP.NET Web應用程序

(2)單擊“確定”按鈕,將彈出選擇項目類型對話框,在該對話框中可選擇Web Forms或MVC等項目類型,這里選擇“Empty”空項目類型,然后點擊確定按鈕,如圖12.2所示。

73340d9589f4471d8620a43456a40f60.png

圖12.2 創建空項目

(3)Ip地址查詢功能的條件屬于IP地址段范圍查找,所以在進行篩選時通常要將IP地址轉換成Int類型,這樣做是方便于數據的范圍篩選,所以接下來定義IP地址的數據類型轉換方法,代碼如下:

privatelong IPToNumber(string ip)//定義IP轉Int方法,參數ip為用戶要查詢的ip地址

{

try

{

char[] separator = newchar[] { '.' };//定義char類型的分割數組

string[] items = ip.Split(separator); //將ip字符串以“.”進行分割并返回數組

//將ip地址的每一段拆分成二進制形式,然后再將二進制轉換成無符號的32位整數

returnlong.Parse(items[0]) << 24 | long.Parse(items[1]) << 16

| long.Parse(items[2]) << 8 | long.Parse(items[3]);

}

catch

{

return 0;//如果發生異常則返回0

}

}

(4)接著定義獲取IP地址的公開方法,該方法將帶有一個字符串類型的參數,參數表示用戶要查詢地區的IP地址,代碼如下:

[WebMethod(Description = "IP地址歸屬地查詢")]

publicstringGetIPToArea (string ip)

{

long IP = IPToNumber(ip);//傳入string類型的ip地址,返回long類型的ip地址

//創建數據庫連接對象

SqlConnection conn =

newSqlConnection("Server=127.0.0.1;Database=School;Uid=sa;Pwd=123456");

conn.Open(); //打開數據庫

DataSet ds = newDataSet(); //定義DataSet

//創建數據適配器

SqlDataAdapter sda =

newSqlDataAdapter("select * from IpAddress where IP1<=" + IP + " and IP2>=" + IP, conn);

sda.Fill(ds); //填充DataSet

conn.Dispose(); //釋放數據庫使用資源

DataTable dt = ds.Tables[0];//返回查詢的數據表

if (dt.Rows.Count > 0) //判斷如果數據總數大于0

{

string Province = (string)dt.Rows[0]["Province"];//獲取省

string City = (string)dt.Rows[0]["City"]; //獲取市

return ip + ","+Province + "," + City; //將ip地址與省和市拼接然后返回

}

return"未找到IP地址所對應的地區信息"; //返回無數據信息

}

代碼完成之后,接下就是調用這個服務,首先運行這個服務頁面,這與運行Web頁面相同,在彈出來的網頁中包含了對于這個服務頁面的說明,其中頁面上有兩個可點擊的連接,該連接對應的是服務中定義的方法名稱,一個是剛才定義GetIPToArea方法,并且帶有方法描述信息,另一個則是創建服務頁面時自動生成的測試方法,這里直接點擊GetIPToArea方法連接,如圖12.3所示。

30278865e453353a856777836182a5d0.png

圖12.3 Web服務幫助頁面

點擊之后頁面會跳轉到可對該方法執行調用的頁面,這個頁面幫助我們可以很方便的測試創建的服務。在頁面上有一個文本框用于輸入方法的參數值,并且下面還有一個“調用”按鈕,當用戶輸入完參數值后,點擊“調用”按鈕即可執行服務程序然后等待返回結果,如圖12.4所示。

4bbee33d392765c0a5414c6aafa8bae4.png

圖12.4 Web服務調用頁面

最后調用結果將會以彈出新的窗口來顯示,如圖12.5所示。

c6f1ca8aaa66976072578f7bb4cca588.png

圖12.5 GetIPToArea方法返回的結果頁面

從上面的測試結果可以看出,Web服務的方法的返回結果是使用XML進行編碼的。

實例02 實現局域網內的Web服務訪問

在本地環境下可通過將Web服務發布到IIS中,在進行調用者的訪問。本實例將實現如何在本地環境下進行調用Web服務。

(1)首先打開IIS管理工具,在IIS管理工具中“網站”的節點下創建一個網站,目錄指定已經編寫好的Web服務應用程序文件夾,然后命名網站名稱并分配IP地址和端口號。這個過程同創建網站站點相同,最后點擊“確定”按鈕完成創建,如圖12.6所示。

395ba7bbec8ad17d6292f5bb47dfc10f.png

圖12.6 發布Web服務到IIS

圖12.6中創建的Web服務站點指定目錄為實例01中創建的的Web服務引用程序,所以接下來在創建一個網站程序用于調用Web服務,該過程主要演示如何添加“服務引用”的操作。

(2)首先新建一個網站并創建Default.aspx頁面,在頁面中添加一個TextBox控件、一個Button控件和兩個Label控件,分別用來輸入IP地址、執行查詢操作和顯示結果信息。

(3)在項目上單擊鼠標右鍵,在彈出的快捷菜單中選擇“添加”→“服務引用”選項,彈出“添加服務引用”對話框,如圖12.7所示。

472b5a096fc089fd1e3e6f5dd3f18167.png

圖12.7 “添加服務引用”對話框

(4)引用添加完成之后,將在“解決方案資源管理器”中添加一個名為App_WebReferences的目錄,在該目錄中將顯示命名空間為ServiceReference1的服務,如圖12.8所示。

ffb035bb61c96a9e9e7d28008e2bf902.png

圖12.8 添加的ServiceReference1服務

(5)在Default.aspx頁的“查詢IP地址”按鈕控件的Click事件中,通過調用服務對象的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(",", "
");

}

this.Label1.Text = "以下為輸出IP、省、市的結果:";

this.Label2.Text = Result;

}

運行Default.aspx頁面,在文本框中輸入一個有效的IP地址,然后點擊“查詢IP地址”按鈕,頁面將會輸出查詢到的結果信息,如圖12.9所示。

e4558aacf895dd4684aaa9bea6f46df9.png

圖12.9 調用Web服務結果

本文摘自明日科技出版的《零基礎學ASP.NET》

以上這篇通過Web Service實現IP地址查詢功能的示例就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/532880.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/532880.shtml
英文地址,請注明出處:http://en.pswp.cn/news/532880.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

java默認數組值_數組元素默認的初始值都是什么

在Java中&#xff0c;使用數組時&#xff0c;如果為數組分配了內存空間&#xff0c;但是沒有為數組元素指定初始值&#xff0c;系統會自動為數組元素指定初始值。數組元素的初始值與數組的數據類型有關&#xff0c;對于不同數據類型的數組&#xff0c;其數組元素的初始值是不一…

java 異步通信處理_java異步通信

在Merlin之前,編寫Socket程序是比較繁瑣的工作.因為輸入輸出都必須同步.這樣,對于多客戶端客戶/服務器模式,不得不使用多線程.即為每個連接的客戶都分配一個線程來處理輸入輸出.由此而帶來的問題是可想而知的.程序員不得不為了避免死鎖,線程安全等問題,進行大量的編碼和測試.很…

Java統計做題正確率_ResNet:訓練期間的準確率為100%,但使用相同數據的預測準確率為33%...

我之前遇到過類似的問題&#xff0c;但解決方案非常簡單 . 你需要增加時代數 . 這是1000個紀元后的輸出[[ 9.99999881e-01 8.58182432e-08 9.54004670e-12][ 8.58779623e-20 9.99999881e-01 6.76907632e-08][ 2.12900631e-26 4.09224481e-34 1.00000000e00]]這是培訓日志..Epoc…

java成員初始化順序_Java成員初始化順序

1. 初始化順序在類的內部&#xff0c;變量定義的先后順序決定了初始化的順序。即使變量散布于方法定義之間&#xff0c;他們仍會在任何方法(包括構造器)被調用之前初始化。2. 靜態成員初始化順序1??初始化類的靜態成員或者靜態塊&#xff0c;靜態初始化只在Class對象首次加載…

java五星好評點評器_親,麻煩給個五星好評!—RatingBar

引言上一篇的CheckBox已經讓大家越來越接近實戰演練了&#xff0c;本章我們繼續分享干貨給大家&#xff0c;今天介紹一個實用的UI控件RatingBar(星級評分條)&#xff0c;對于使用過電商APP(某東&#xff0c;某寶等)的小伙伴們來說&#xff0c;應該不會陌生。在對商品進行評價時…

java激光推送ios_關于ios極光推送server端注意的地方

今天試用了極光推送API用它是因為&#xff0c;大多數人說它的文檔是最全的&#xff0c;但是用過之后&#xff0c;發現關于IOS的文檔&#xff0c;還是很不夠&#xff0c;導致走了一點彎路&#xff01;特別是服務端的代碼&#xff1a;https://github.com/jpush/jpush-api-java-cl…

日是這一年的等幾天Java代碼_java中計算指定日期是一年的第幾天的方法

Java輸入日期計算是這年的第幾天&#xff1a;思路通過年份區分出是閏年還是平年&#xff0c;平年 2 月 28 天&#xff0c;閏年 2 月 29 天&#xff1b;1、3、5、7、8、10、12 月份 31 天其余月份均為 30 天&#xff1b;然后將每個月的天數相加即可&#xff0c;注意如果輸入的是…

[2021-CVPR] Fine-grained Angular Contrastive Learning with Coarse Labels 論文簡析

[2021-CVPR] Fine-grained Angular Contrastive Learning with Coarse Labels 論文簡析 論文地址&#xff1a;https://arxiv.org/abs/2012.03515 代碼地址&#xff1a;https://github.com/guybuk/ANCOR 首先通俗地介紹一下細粒度&#xff08;fine-grained&#xff09;&#…

orcle mysql 查詢_Oracle與Mysql的高級查詢與難點sql

一、連接查詢 1. 內連接 內連接用于返回滿足連接條件的所有記錄。默認情況下&#xff0c;在執行連接查詢時如果沒有指定任何連接操作符&#xff0c;那么這些連接查詢都屬于內連接。 Sql 代碼 1. SELECT a.dname,b.ename from depta,empb where a.deptnob.deptno and a.deptno10…

[2020-AAAI] Revisiting Image Aesthetic Assessment via Self-Supervised Feature Learning 論文簡析

[2020-AAAI] Revisiting Image Aesthetic Assessment via Self-Supervised Feature Learning 論文簡析 論文鏈接&#xff1a;https://arxiv.org/abs/1911.11419 本文探索從自監督的角度進行美學評估。基于一個基本的動機&#xff1a;一個好的美學特征表示應該能夠辨別出不同的…

java9 堆外內存_java堆外內存泄漏排查

當考慮Java中的內存泄漏時&#xff0c;我們通常會考慮Java堆泄漏&#xff0c;即在堆中分配的對象沒有被垃圾收集。這是我在處理一臺服務器內存泄漏時的想法&#xff0c;但我即將經歷的遠超出我的想象。癥狀&#xff1a;運行Vertx應用程序(沒有交換分區)的生產服務器被Linux內存…

[2020-CVPR] Dynamic Region-Aware Convolution 論文簡析

[2020-CVPR] Dynamic Region-Aware Convolution 論文簡析 論文地址&#xff1a;https://arxiv.org/abs/2003.12243 參考代碼地址&#xff08;非官方&#xff09;&#xff1a;https://github.com/shallowtoil/DRConv-PyTorch 代碼筆者自己試了一下&#xff0c;應該是可以的&…

java activity模式_Activity的啟動模式

Android系統采用任務棧的方式來管理Activity實例。棧是后進先出的數據結構。通常一個應用程序對應一個任務棧&#xff0c;默認情況下&#xff0c;每啟動一個Activity都會入棧&#xff0c;處于棧頂位置。用戶操作的永遠都是棧頂的Activity。Activity可以層疊擺放&#xff0c;每啟…

Python 中的可執行對象 eval,exec 和 compile與其在深度學習訓練中的應用實例

Python 中的可執行對象 eval&#xff0c;exec 和 compile 與其在深度學習訓練中的應用實例 eval 計算指定表達式的值。也就是說它要執行的python代碼只能是單個表達式&#xff08;注意eval不支持任何形式的賦值操作&#xff09;&#xff0c;而不能是復雜的代碼邏輯。 eval(s…

php寫簡單接口_php寫接口的日常

php寫接口的日常/*評論列表*/public function commentListW(){$base new Base();$info $base->getUserByToken();$shop_id $info[shop_id];$page $this->data[page]?:1;$pagesize $this->data[pagesize]?:C(ROLLPAGE);$search $this->data[search];$and &…

mmdetection 使用筆記 01: 安裝與簡單的推理demo

mmdetection 使用筆記 01: 安裝與簡單的推理demo mmdetection是來自商湯和港中文聯合實驗室openmmlab推出的目標檢測工具包&#xff0c;與其同系列的還有基礎視覺包mmcv&#xff0c;圖像分類mmclassification&#xff0c;還有mmaction&#xff0c;mmaction2等等。 今天第一次…

php無限評論回復_php實現無限級評論功能_后端開發

php去除數組的鍵名的方法_后端開發在php中可以使用“array_values()”函數去除數組的鍵名&#xff0c;該函數返回包含數組中所有的值的數組&#xff0c;其語法是“array_values(array)”&#xff0c;其參數“array”表示規定的數組&#xff0c;返回值是包含數組中所有的值的數組…

錯誤類型、混淆矩陣及目標檢測常用評價指標

目標檢測常用評價指標 本文主要參考陳愷大佬在B站商湯賬號的介紹mmdetection的視頻。 檢測結果的正確/錯誤類型 真陽性&#xff08;Ture Positive&#xff09;&#xff1a;算法檢測到了某類物體&#xff08;Positive&#xff09;&#xff0c;而實際圖中也確實有這個物體&…

php顯示json,PHP解決JSON中文顯示問題

PHP如何解決JSON中文顯示問題&#xff1f;本文主要介紹了PHP JSON格式的中文顯示問題解決方法&#xff0c;本文總結了3種解決中文顯示\u開頭字符問題的方法。希望對大家有所幫助。返回json數據中文顯示的問題解決方法一&#xff1a;<?php function Notice(){include ./incl…

使用yolov5訓練自己的目標檢測數據集

使用yolov5訓練自己的目標檢測數據集 yolov4出來后不久&#xff0c;又出現了yolov5&#xff0c;沒有論文。雖然作者沒有放上和yolov4的直接測試對比&#xff0c;但在COCO數據集的測試效果還是很可觀的。很多人考慮到YOLOv5的創新性不足&#xff0c;對算法是否能夠進化&#xf…