欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

簡單易用的Rest-創(chuàng)新互聯(lián)

今天碰巧,用到了淘寶的在線IP地址查詢的Rest API,它提供接口給用戶查詢IP地址的歸宿地。數(shù)據(jù)庫比較龐大,準(zhǔn)確性也比較高。地址為:http://ip.taobao.com/instructions.php。

新邵網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)!從網(wǎng)頁設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、成都響應(yīng)式網(wǎng)站建設(shè)等網(wǎng)站項(xiàng)目制作,到程序開發(fā),運(yùn)營維護(hù)。創(chuàng)新互聯(lián)于2013年成立到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)

簡單易用的Rest

這是一個(gè)GET請求的接口,使用方式很簡單,只要將這個(gè)URL復(fù)制到瀏覽器的地址欄就可以了。

簡單易用的Rest

可以看到接口返回的是一串JSON格式的字符串。關(guān)于如何解析JSON,參考我的這篇博文:http://blog.csdn.net/chinacsharper/article/details/9246627。

那么如何在程序中實(shí)現(xiàn)呢?我們新建一個(gè)控制臺(tái)應(yīng)用程序,并鍵入如下代碼:

namespace RestServiceApp
{
    class Program
    {
        static void Main(string[] args)
        {
            string url = "http://ip.taobao.com/service/getIpInfo.php?ip=210.75.225.254";
            HttpWebRequest request = (HttpWebRequest)WebRequest.CreateDefault(new Uri(url));
           webResponse response = request.GetResponse();
            StreamReader reader = new StreamReader(response.GetResponseStream());
            Console.WriteLine(reader.ReadToEnd());
        }
    }
}

運(yùn)行它可以看到:

簡單易用的Rest

關(guān)于如何解碼\u4e2d\u56fd這樣的字符串,可以參考我的這篇博文:http://blog.csdn.net/chinacsharper/article/details/9885165。

好了,如何調(diào)用這個(gè)淘寶IP地址的接口就到這,不過我由此想到了兩個(gè)東西,一個(gè)是WCF Rest,一個(gè)是ASP.NET MVC中的Rest Api,這里先介紹一下WCF Rest。

我們在前文也簡單的講解過如何使用WCF,WCF最關(guān)鍵的要素就是A(Address地址)、B(Binding綁定)、C(Contract契約)。為了便于演示,我們直接用控制臺(tái)應(yīng)用程序作為WCF Rest的宿主程序,先建立一個(gè)類庫項(xiàng)目,里面的代碼如下。

namespace Service.Interface
{
    [ServiceContract]
    public interface IAddress
    {
        [WebGet(UriTemplate = "ip={ip}")]
        Address Get(string ip);
    }
    [DataContract]
    public class Address
    {
        [DataMember]
        public string IPAddress { get; set; }
        [DataMember]
        public string Province { get; set; }
        [DataMember]
        public string City { get; set; }
    }
}

很簡單,就是定義了一個(gè)契約,用于獲取IP地址信息。需要說明一下,這個(gè)項(xiàng)目需要引用System.ServiceModel和System.Runtime.Serialization這兩個(gè)dll。

接下來就是要?jiǎng)?chuàng)建一個(gè)WCF Rest服務(wù)端程序,用以提供服務(wù)。

先定義一個(gè)類AddressService,并實(shí)現(xiàn)我們剛剛定義的IAddress接口。

namespace Service
{
    public class AddressService : IAddress
    {
        private static IList<Address> addresses = new List<Address>();
                                                     
        static AddressService()
        {
            //這里可以準(zhǔn)備一個(gè)IP地址庫并放入到IP地址列表中,以提供數(shù)據(jù)服務(wù)
            addresses.Add(new Address() { IPAddress = "210.75.225.254", Province = "上海市", City = "上海市" });
        }
                                                     
        public Address Get(string ipAddress)
        {
            return addresses.FirstOrDefault(x => x.IPAddress == ipAddress);
        }
    }
}

接著在App.config配置文件中添加配置信息。

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
  </startup>
                                                
  <system.serviceModel>
    <services>
      <service name="Service.AddressService">
        <endpoint address="http://127.0.0.1:8888/addresses"
                  binding="webHttpBinding"
                  contract="Service.Interface.IAddress"/>
      </service>
    </services>
  </system.serviceModel>
</configuration>

最后在Main方法中添加如下代碼。

namespace Service
{
    class Program
    {
        static void Main(string[] args)
        {
            using (WebServiceHost host = new WebServiceHost(typeof(AddressService)))
            {
                host.Open();
                Console.Read();
            }
        }
    }
}

然后我們就可以運(yùn)行這個(gè)控制臺(tái)項(xiàng)目了。注意:運(yùn)行程序時(shí),請確保你當(dāng)前的用戶為操作系統(tǒng)管理員用戶。

服務(wù)端準(zhǔn)備好,我們寫一下客戶端的調(diào)用代碼,在控制臺(tái)應(yīng)用程序中測試一下這個(gè)WCF Rest服務(wù)。

同樣的,我們需要先在客戶端的App.config文件中配置一下這個(gè)服務(wù)(也可以在代碼中通過硬編碼的方式進(jìn)行)。

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
  </startup>
  <system.serviceModel>
    <client>
      <endpoint name="addressService"
                 address="http://127.0.0.1:8888/addresses"
                 binding="webHttpBinding"
                 contract="Service.Interface.IAddress" />
    </client>
  </system.serviceModel>
</configuration>

這里要注意,綁定模型要跟服務(wù)端模型一致,否則會(huì)有綁定不匹配的異常產(chǎn)生。

客戶端代碼:

namespace RestServiceApp
{
    class Program
    {
        static void Main(string[] args)
        {
            using (ChannelFactory<IAddress> channelFactory = new ChannelFactory<IAddress>("addressService"))
            {
                IAddress iAddress = channelFactory.CreateChannel();
                Address address = iAddress.Get("210.75.225.254");
                       
                if (address != null)
                {
                    Console.WriteLine(string.Format("IP來自{0},{1}",address.Province,address.City));
                }
            }
        }
    }
}

保證之前建立的服務(wù)端程序在運(yùn)行狀態(tài),然后我們運(yùn)行一下這個(gè)客戶端程序:

簡單易用的Rest

可以看到,我們調(diào)用WCF Rest服務(wù)成功的獲得了IP地址的詳細(xì)信息。

既然是Get請求型的Rest服務(wù),那么應(yīng)該可以在瀏覽器中直接調(diào)用,我們打開瀏覽器輸入地址。

簡單易用的Rest

同樣的獲得了XML類型的數(shù)據(jù)。

那如果我們想提供JSON格式的數(shù)據(jù)給別人呢?很簡單,只要在定義接口方法時(shí),指定數(shù)據(jù)返回的格式即可。

[ServiceContract]
public interface IAddress
{
    [WebGet(UriTemplate = "ip={ip}", ResponseFormat = WebMessageFormat.Json)]
    Address Get(string ip);
}

簡單易用的Rest

看到這里,你是否覺得Rest非常簡單易用呢?

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。

新聞名稱:簡單易用的Rest-創(chuàng)新互聯(lián)
文章網(wǎng)址:http://chinadenli.net/article22/dechcc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信小程序移動(dòng)網(wǎng)站建設(shè)、外貿(mào)網(wǎng)站建設(shè)、面包屑導(dǎo)航、網(wǎng)站策劃、做網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

手機(jī)網(wǎng)站建設(shè)