我的 iPhone 应用程序包含多个对服务器的 http 请求。服务器的IP地址可以由用户输入,这样您就可以将应用程序与您自己的私人服务器结合使用。
在发出请求之前,我总是检查输入的 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 地址,但我不知道如何执行此操作。
任何建议将不胜感激!
您可以通过以下方法检查网址有效性:
- (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];
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)