91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

簡單易用的Rest

發布時間:2020-07-01 05:26:09 來源:網絡 閱讀:992 作者:guwei4037 欄目:編程語言

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

簡單易用的Rest

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

簡單易用的Rest

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

那么如何在程序中實現呢?我們新建一個控制臺應用程序,并鍵入如下代碼:

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());
        }
    }
}

運行它可以看到:


簡單易用的Rest

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

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

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

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; }
    }
}

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

接下來就是要創建一個WCF Rest服務端程序,用以提供服務。

先定義一個類AddressService,并實現我們剛剛定義的IAddress接口。

namespace Service
{
    public class AddressService : IAddress
    {
        private static IList<Address> addresses = new List<Address>();
                                                     
        static AddressService()
        {
            //這里可以準備一個IP地址庫并放入到IP地址列表中,以提供數據服務
            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();
            }
        }
    }
}

然后我們就可以運行這個控制臺項目了。注意:運行程序時,請確保你當前的用戶為操作系統管理員用戶。

服務端準備好,我們寫一下客戶端的調用代碼,在控制臺應用程序中測試一下這個WCF Rest服務。

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

<?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>

這里要注意,綁定模型要跟服務端模型一致,否則會有綁定不匹配的異常產生。

客戶端代碼:

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));
                }
            }
        }
    }
}

保證之前建立的服務端程序在運行狀態,然后我們運行一下這個客戶端程序:


簡單易用的Rest

可以看到,我們調用WCF Rest服務成功的獲得了IP地址的詳細信息。

既然是Get請求型的Rest服務,那么應該可以在瀏覽器中直接調用,我們打開瀏覽器輸入地址。

簡單易用的Rest

同樣的獲得了XML類型的數據。

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

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

簡單易用的Rest

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

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

清河县| 长寿区| 浦东新区| 明星| 安新县| 文水县| 巫山县| 连平县| 盘锦市| 山阴县| 玛多县| 黄石市| 瑞金市| 布拖县| 惠来县| 敦煌市| 永年县| 靖江市| 雷州市| 西林县| 云浮市| 林周县| 湄潭县| 青川县| 西安市| 绥滨县| 长汀县| 佛学| 公主岭市| 德江县| 浦城县| 确山县| 库尔勒市| 南召县| 东乡县| 洪洞县| 吐鲁番市| 永兴县| 南涧| 兴城市| 安福县|