Android 如何在Flutter中获得公共IP?
在我的情况下,我需要公共IP地址。但是,在研究了几乎所有与本地IP相关的文档之后,比如:,我想要202.xxx而不是192.168.xxx。有人能给你一些建议吗?你有没有试过通过sim网络而不是模拟器或wifi来运行它它会工作。您是否尝试过通过sim网络而不是模拟器或wifi运行它它会工作。据我所知,无法从设备内部获取设备的公共IP。这是因为绝大多数情况下,设备不知道自己的公共IP。公共IP由ISP分配给设备,并且您的设备通常通过任意数量的调制解调器、路由器、交换机等与ISP分离 您需要查询一些外部资源或API(例如),然后这些资源或API将告诉您公共IP是什么。您可以通过一个简单的HTTP请求来实现这一点 导入“包:http/http.dart”; 未来的getPublicIP()异步{ 试一试{ 常量url=https://api.ipify.org'; var response=wait http.get(url); 如果(response.statusCode==200){ //响应主体是纯文本的IP,所以 //按原样归还。 返回响应.body; }否则{ //请求失败,代码为非200 //ipify.org API有很多有保证的正常运行时间 //承诺,所以这不应该真的发生。 打印(响应状态码); 打印(响应.正文); 返回null; } }捕获(e){ //由于错误,请求失败,很可能是因为 //手机未连接到internet。 印刷品(e); 返回null; } }Android 如何在Flutter中获得公共IP?,android,flutter,dart,Android,Flutter,Dart,在我的情况下,我需要公共IP地址。但是,在研究了几乎所有与本地IP相关的文档之后,比如:,我想要202.xxx而不是192.168.xxx。有人能给你一些建议吗?你有没有试过通过sim网络而不是模拟器或wifi来运行它它会工作。您是否尝试过通过sim网络而不是模拟器或wifi运行它它会工作。据我所知,无法从设备内部获取设备的公共IP。这是因为绝大多数情况下,设备不知道自己的公共IP。公共IP由ISP分配给设备,并且您的设备通常通过任意数量的调制解调器、路由器、交换机等与ISP分离 您需要查询一些
编辑:现在有一个从IPify服务获取公共IP信息的方法。您可以使用此软件包代替上述手动解决方案:
import'包:dart_-ipify/dart_-ipify.dart';
void main()异步{
final ipv4=等待Ipify.ipv4();
打印(ipv4);/98.207.254.136
final ipv6=wait Ipify.ipv64();
打印(ipv6);//98.207.254.136或2a00:1450:400f:80d::200e
final ipv4json=wait Ipify.ipv64(格式:format.JSON);
打印(ipv4json);//{“ip”:“98.207.254.136”或{“ip”:“2a00:1450:400f:80d::200e”}
//响应类型可以是文本、json或jsonp
}
据我所知,无法从设备内部获取设备的公共IP。这是因为绝大多数情况下,设备不知道自己的公共IP。公共IP由ISP分配给设备,并且您的设备通常通过任意数量的调制解调器、路由器、交换机等与ISP分离
您需要查询一些外部资源或API(例如),然后这些资源或API将告诉您公共IP是什么。您可以通过一个简单的HTTP请求来实现这一点
导入“包:http/http.dart”;
未来的getPublicIP()异步{
试一试{
常量url=https://api.ipify.org';
var response=wait http.get(url);
如果(response.statusCode==200){
//响应主体是纯文本的IP,所以
//按原样归还。
返回响应.body;
}否则{
//请求失败,代码为非200
//ipify.org API有很多有保证的正常运行时间
//承诺,所以这不应该真的发生。
打印(响应状态码);
打印(响应.正文);
返回null;
}
}捕获(e){
//由于错误,请求失败,很可能是因为
//手机未连接到internet。
印刷品(e);
返回null;
}
}
编辑:现在有一个从IPify服务获取公共IP信息的方法。您可以使用此软件包代替上述手动解决方案:
import'包:dart_-ipify/dart_-ipify.dart';
void main()异步{
final ipv4=等待Ipify.ipv4();
打印(ipv4);/98.207.254.136
final ipv6=wait Ipify.ipv64();
打印(ipv6);//98.207.254.136或2a00:1450:400f:80d::200e
final ipv4json=wait Ipify.ipv64(格式:format.JSON);
打印(ipv4json);//{“ip”:“98.207.254.136”或{“ip”:“2a00:1450:400f:80d::200e”}
//响应类型可以是文本、json或jsonp
}
我最近遇到了这个话题。
在调查了这个问题之后,我找到了一个使用外部API的解决方案。
我正在使用,它有一个慷慨的免费层
- 请求免费访问密钥
- 打下面的电话
- 您可以从响应中提取ip参数
- 请求免费访问密钥
- 打下面的电话
- 您可以从响应中提取ip参数