【问题标题】:How to get device country address through IP address?如何通过IP地址获取设备国家地址?
【发布时间】:2019-07-29 12:42:25
【问题描述】:

我目前正在开展一个项目,该项目需要确定设备的国家/地区地址在哪里。我曾尝试使用 Montemagno 的 Geolocator,但问题是如果用户没有在他的设备上使用定位服务或 gps。我认为使用 IP 地址可能是可能的,但我不知道如何或任何建议可能会有所帮助。谢谢。

【问题讨论】:

    标签: c# xamarin xamarin.android xamarin.ios geolocation


    【解决方案1】:

    您需要创建一个 http GET 请求以获取 JSON 格式的结果 您可以使用IP API 通过 IP 地址获取国家/地区信息。 获取请求示例:

    Example Reguest

    返回一个包含国家信息的json数据。

    { “查询”:“24.48.0.1”, “状态”:“成功”, “国家”:“加拿大”, "国家代码": "CA", “区域”:“质量控制”, "regionName": "魁北克", “城市”:“蒙特利尔”, "zip": "H1S", “纬度”:45.5808, “隆”:-73.5825, "timezone": "美国/多伦多", "isp": "Le Groupe Videotron Ltee", "org": "Videotron Ltee", "as": "AS5769 Videotron Telecom Ltee" }

    【讨论】:

      【解决方案2】:

      “您可以使用 IpInfo 通过互联网地址获取用户所在的国家/地区。除非他们使用 VPN 或代理,否则这是您的最佳选择。”来自This question的用户 Stavm

      【讨论】:

      • 代理如果通过X-Forwarded-For就没有问题;如果它是一个匿名代理,这只是一个问题。
      【解决方案3】:

      您应该使用 MaxMind 的 GeoIP2 之类的服务,并定期下载更新的数据库。如果您每次都保持联系远程 API,它会很慢。最好有一个按计划刷新的本地数据库。

      还有一个free version。

      【讨论】:

        【解决方案4】:

        你有足够的设备空间和带宽吗?

        如果您有超过5MB的可用空间并且可以下载更新,那么您可以下载离线地理数据库并在本地查询。您可以访问IP2Location LITE免费数据库。但请注意,您需要定期更新。

        如果您没有足够的空间,您可以使用远程 API 调用来获取信息。其中一项免费服务是IPInfoDB,您可以在页面中找到示例代码。自 2010 年以来,它是一项免费服务。

        【讨论】:

          猜你喜欢
          • 2013-07-02
          • 2016-02-04
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多