艾玛,这两天为了整这个ip 真的可谓无所不用其极。

在网上查阅了各种资料,其实我想实现的功能很简单

就像百度

直接看到自己的出口ip

奈何查了许多资料,都没有适合的解决办法。

灵机一动,我是不是可以访问百度的api呢?

于是点击了上面的Ip地址查询,跳转到了  http://www.ip138.com/

然后我试着在显示Ip的地方,查看元素

惊喜来了

原来它是套了一个iframe

把  iframe 的地址那出来  http://2018.ip138.com/ic.asp

直接返回ip地址和所在地。

接着对返回数据进行解析

public static string getExternalIp()
{
try
{
WebClient client = new WebClient();
client.Encoding = System.Text.Encoding.Default;
string response = client.DownloadString("http://2018.ip138.com/ic.asp");
string myReg = @"<center>([\s\S]+?)<\/center>";
Match mc = Regex.Match(response, myReg, RegexOptions.Singleline);
if (mc.Success && mc.Groups.Count > 1)
{
var resStart = mc.Groups[1].Value.IndexOf('[');
var resEnd = mc.Groups[1].Value.IndexOf(']');
var resSub = mc.Groups[1].Value.Substring(resStart + 1, resEnd - resStart - 1);
response = resSub; return response;
}
else
{
return "0.0.0.0";
}
}
catch (Exception)
{
return "0.0.0.0";
}
}

  完美,是不是大功告成?

可是在测试的途中发现有时候依然会失败,返回数据为 "0.0.0.0"

于是我又加了一个定时器

 GetAddressIP();
if (!this.lblIp.Content.ToString().Equals("0.0.0.0"))
{
selectIp.Stop();
}

  每一秒去取一次Ip,直到取到为止

当然我觉得这都不是最好的办法

可是转念一想,为什么我们不自己写一个获取请求者的Ip的接口呢?

在这里我得感谢一个人

老六代码

多亏有了这位大哥的帮忙,才让我得已在 .net core api 下面成功拿到了请求者的Ip

初始化时

   services.AddMvc();
services.Configure<IISOptions>(options =>
{
options.ForwardClientCertificate = false;
});

  然后接口这里

 private IHttpContextAccessor _accessor;

 public Controller(IHttpContextAccessor accessor)
{
this._accessor = accessor;
} [HttpPost, Route("GetIp")]
public ActionResult<string> GetIp()
{
var ip = _accessor.HttpContext.Connection.RemoteIpAddress;
return ip.ToString();
}

  因为我是.net core 的缘故。所以用到了IHttpContextAccessor

我想如果是普通的api 应该直接就可以用Request 吧,就像老六大哥说的那样~

最新文章

  1. easyui datagrid 合并单元格
  2. iOS闪烁效果工具 GlitchLabel
  3. Codeforces Round #274 (Div. 2)
  4. 汇编invoke和call的关系
  5. 关于checkbox的checked属性和change事件
  6. NOIP[2015] 运输计划
  7. 鼠标聚焦到Text输入框时,按回车键刷新页面原因及解决方法
  8. Liunx文件解压与压缩
  9. jQuery --- 第四期 (jQuery动效)
  10. Linux学习历程——Centos 7 账户管理命令(用户组篇)groupadd groupmod groupdel
  11. python测试工程师高端基础面试题整理
  12. WPF线程中获取控件的值和给控件赋值
  13. JAVA SOCKET编程单线程简单实例
  14. DEV Winform分页用户组件
  15. take a cpu core offline
  16. 如何使用List&lt;HashMap&lt;String, String&gt;&gt;详细讲解
  17. iOS 10 之后权限设置
  18. Nginx配置杂记(转)
  19. SecureCRT 8.1使用经验总结
  20. Zend_Application 流程详解

热门文章

  1. HZOJ 数颜色
  2. 详解TableStore模糊查询——以订单场景为例
  3. 2018-9-1-win10-uwp-轻量级-MVVM-框架入门-2.1.5.3199
  4. 1、Dapper介绍
  5. 2018-8-10-win10-sdk-是否向下兼容
  6. H3C HDLC协议使用限制
  7. JQuery操作select下拉框
  8. js基础——函数
  9. 1471 - Defense Lines
  10. H3C DHCP地址分配方式