• C#根据用户IP地址查询用户信息


    调用接口来自sina,显示的信息较为全面。
    接口地址为  http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=json&ip={ip}
    返回json,格式为如下
    {"ret":1,"start":"59.174.77.0","end":"59.174.80.156","country":"\u4e2d\u56fd",
    "province":"\u6e56\u5317","city":"\u6b66\u6c49","district":"","isp":"\u7535\u4fe1","type":"","desc":""}

     为了方便使用,加入类IpDetai解析json。
    使用方式(ASP.NET):
    Label1.Text = IpHelper.Get("xx.xx.xx.xxx",null).Province;
    另外JSON解析用到了.net 3.5的System.Web.Script.Serialization.JavaScriptSerializer 

    代码片段(2)


    View Code
    using System;

    03 using System.IO;

    04 using System.Net;

    05 using System.Text;

    06 using System.Web.Script.Serialization;

    07

    08 namespace IpUtils

    09 {

    10 public class IpDetail

    11 {

    12 public String Ret { get; set; }

    13

    14 public String Start { get; set; }

    15

    16 public String End { get; set; }

    17

    18 public String Country { get; set; }

    19

    20 public String Province { get; set; }

    21

    22 public String City { get; set; }

    23

    24 public String District { get; set; }

    25

    26 public String Isp { get; set; }

    27

    28 public String Type { get; set; }

    29

    30 public String Desc { get; set; }

    31 }

    32

    33 public class IpHelper

    34 {

    35 /// <summary>

    36 /// 获取IP地址的详细信息,调用的借口为

    37 /// http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=json&ip={ip}

    38 /// </summary>

    39 /// <param name="ipAddress">请求分析得IP地址</param>

    40 /// <param name="sourceEncoding">服务器返回的编码类型</param>

    41 /// <returns>IpUtils.IpDetail</returns>

    42 public static IpDetail Get(String ipAddress,Encoding sourceEncoding)

    43 {

    44 String ip = string.Empty;

    45 if(sourceEncoding==null)

    46 sourceEncoding = Encoding.UTF8;

    47 using (var receiveStream = WebRequest.Create("http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=json&ip="+ipAddress).GetResponse().GetResponseStream())

    48 {

    49 using (var sr = new StreamReader(receiveStream, sourceEncoding))

    50 {

    51 var readbuffer = new char[256];

    52 int n = sr.Read(readbuffer, 0, readbuffer.Length);

    53 int realLen = 0;

    54 while (n > 0)

    55 {

    56 realLen = n;

    57 n = sr.Read(readbuffer, 0, readbuffer.Length);

    58 }

    59 ip = sourceEncoding.GetString(sourceEncoding.GetBytes(readbuffer, 0, realLen));

    60 }

    61 }

    62 return !string.IsNullOrEmpty(ip)?new JavaScriptSerializer().Deserialize<IpDetail>(ip):null;

    63 }

    64 }

    65

    66 public class EncodingHelper

    67 {

    68 public static String GetString(Encoding source, Encoding dest, String soureStr)

    69 {

    70 return dest.GetString(Encoding.Convert(source, dest, source.GetBytes(soureStr)));

    71 }

    72

    73 public static String GetString(Encoding source, Encoding dest, Char[] soureCharArr, int offset, int len)

    74 {

    75 return dest.GetString(Encoding.Convert(source, dest, source.GetBytes(soureCharArr, offset, len)));

    76 }

    77 }

    78 }
  • 相关阅读:
    SPI总线介绍
    linuxok6410的I2C驱动分析---用户态驱动
    Centos下安装Mongodb
    python学习笔记(二):python数据类型
    python学习笔记(三):文件操作和集合
    python实现显示安装进度条
    python判断一个字符串是否是小数
    python学习笔记(四):函数
    python学习笔记(五):装饰器、生成器、内置函数、json
    python学习笔记(七):面向对象编程、类
  • 原文地址:https://www.cnblogs.com/honghuan/p/1970597.html
Copyright © 2020-2023  润新知