我需要在我的iOS应用中获取全局IP地址。
我搜索了但找不到有关获取全球IP地址的任何帖子。其中大多数是获取本地IP地址。
我尝试了这段代码:How to find IP Address of iPhone。但是这会返回本地IP地址。
对于我的应用,我需要获取网站所示的IP地址,例如:
http://myipaddress.com/show-my-ip-address/和 http://whatismyipaddress.com/
是否可以通过编程方式获取iOS应用中的全局IP地址?一种选择是使用上述Web服务,但这些网站的响应将是HTML。是否有任何可以返回简单JSON或XML的免费Web服务?
答案 0 :(得分:6)
** 编辑06/29/16: **我已更新API的网址,因为较旧的网址不再有效。
您可以使用:https://api.ipify.org/?format=text
这是一个简单的字符串。您可以获取responseObject并在应用程序中存储和使用它。我推荐AFNetworking,这是一个简单的调用和返回,你不需要JSON或xml。
NSURL *URL = [NSURL URLWithString:@"http://api-sth01.exip.org/"];
NSString *URLPath = @"?call=ip";
// Start Connection
AFHTTPClient *httpClient = [[AFHTTPClient alloc] initWithBaseURL:URL];
[httpClient setDefaultHeader:@"Accept" value:@"application/json"];
NSMutableURLRequest *request = [httpClient requestWithMethod:@"GET" path:URLPath parameters:nil];
AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc]initWithRequest:request];
[operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {
// SAVE responseObject to your app
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
// Failed
NSLog(@"error: %@", operation.responseString);
}];
[operation start];
但是如果你想要JSON,你可以使用:https://api.ipify.org/?format=json
答案 1 :(得分:0)
否 - 无法以编程方式严格使用代码检索外部(全局)IP地址。关于使用服务来查看外部IP,我会查看您要解决的问题:解析或抓取您提到的两个站点或CheckIP返回的HTML。
[NSData dataWithContentsOfURL:url]
CheckIP返回的示例如下所示,非常简单,可以使用RegEx轻松获取
<html>
<head>
<title>
Current IP Check
</title>
</head>
<body>
Current IP Address: 108.66.182.170
</body>
</html>
编辑: 使用@gmogames答案中的URL,您只需要执行以下操作即可将数据转换为字符串:
NSURL *theURL = [[NSURL alloc] initWithString:@"http://api-sth01.exip.org/?call=ip"];
NSString* myIP = [[NSString alloc] initWithData:[NSData dataWithContentsOfURL:theURL]
encoding:NSUTF8StringEncoding];