iPhone SDK : How to check if IP entered by user is valid?

标签 iphone objective-c ip-address nsurlrequest

我的 iPhone 应用程序包含几个对服务器的 http 请求。服务器的 IP 地址可以由用户输入,因此您可以将应用程序与您自己的私有(private)服务器结合使用。

在发出请求之前,我总是检查输入的 IP 地址是否有效,我这样做是这样的:

-(BOOL)urlExists {

NSString *url = [NSString stringWithFormat:@"%@", ipAddress];
NSURLRequest *myRequest1 = [NSURLRequest requestWithURL:[NSURL URLWithString:url] cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:5.0];
NSHTTPURLResponse* response = nil;
NSError* error = nil;
[NSURLConnection sendSynchronousRequest:myRequest1 returningResponse:&response error:&error];
if ([response statusCode] == 404){
    return NO;

}
else{
    return YES;
}

[url release];
[response release];
[error release];
[myRequest1 release];

}

只要输入的地址看起来像这样就可以完美地工作:xx.xx.xxx.xxx 但是,如果您尝试输入类似“1234”或“test”的内容,上面显示的代码将不起作用。所以我必须以某种方式检查输入的地址是否“看起来”像 IP 地址,但我不知道该怎么做。

非常感谢任何建议!

最佳答案

您可以通过以下方法检查 url 有效性:

- (BOOL) validateUrl: (NSString *) candidate {
    NSString *urlRegEx =
    @"(http|https)://((\\w)*|([0-9]*)|([-|_])*)+([\\.|/]((\\w)*|([0-9]*)|([-|_])*))+";
    NSPredicate *urlTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", urlRegEx]; 
    return [urlTest evaluateWithObject:candidate];
}

关于iPhone SDK : How to check if IP entered by user is valid?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5154545/

相关文章:

iphone - 核心数据 NSSet 问题

iphone - 在 Interface Builder 中使用自定义控件

iphone - 声音播放完毕后执行代码的最佳方式

ios - Xcode - 在 AppDelegate 中加载声音时出现 Apple Mach-O Linker 错误

获取本地主机名和 IP 地址的 C++ Windows 函数调用

iphone - 获取UITableView的高度

ios - UIButton 如何存储不同的 UI 状态

iphone - 删除 UIImageView 的矩形

angularjs - 使用Nodejs、Express和AngularJS在浏览器中显示IP

通过 IP 地址访问时 Apache httpd 请求错误 - 审查委员会