如何使用MVC WebService / Method从IPinfodb.com获取Json数据

时间:2010-09-24 10:07:31

标签: asp.net-mvc geolocation asmx

我想基于IP获取用户位置。用户进入网站时

我曾经在经典的asp

中使用XMLHTTPREquest

如何使用.net MVC。

我是.net

的新手

1 个答案:

答案 0 :(得分:0)

WebClientJavaScriptSerializer类的组合可以帮助您。一如既往地定义一个代表您的模型的类:

public class LocationResult
{
    public string Ip { get; set; }
    public string Status { get; set; }
    public string CountryCode { get; set; }
    public string CountryName { get; set; }
    public string RegionCode { get; set; }
    public string RegionName { get; set; }
    public string City { get; set; }
    public string ZipPostalCode { get; set; }
    public float Latitude { get; set; }
    public float Longitude { get; set; }
}

然后调用该服务并将JSON结果反序列化回您的模型:

public LocationResult GetLocationInfo(string ip)
{
    using (var client = new WebClient())
    {
        // query the online service provider and fetch the JSON
        var json = client.DownloadString(
            "http://ipinfodb.com/ip_query.php?ip=" + ip + 
            "&output=json&timezone=false"
        );

        // use the JavaScriptSerializer to deserialize the JSON
        // result back to a LocationResult
        var serializer = new JavaScriptSerializer();
        return serializer.Deserialize<LocationResult>(json);
    }
}