我使用UIWebView创建一个简单的Web浏览器。用户在地址栏上输入地址 - >检查一下。
1.如果文字是网址 - >加载请求
2.如果文字是字符串 - >执行谷歌搜索
在第一种情况下,如果string的格式为:abc.xyz,如何添加方案和主机? 示例:用户输入google.com - >正确到https://google.com engadget.com - > https://www.engadget.com
我的问题是如何知道哪个部分必须添加到网址(http,https,有或没有www)。
更新
使用NSURLSeassion测试连接
- (void)checkRequest:(NSString*)urlRequest
{
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:urlRequest]];
[request setHTTPMethod:@"HEAD"];
NSURLSessionTask *task = [[NSURLSession sharedSession] dataTaskWithRequest:request completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
if ([response isKindOfClass:[NSHTTPURLResponse class]]) {
NSInteger statusCode = [(NSHTTPURLResponse *)response statusCode];
if (statusCode == 200)
NSLog(@"Correct url");
// check status code here
}
if (error) {
// handle other errors here
}
// handle data here
}];
[task resume];
}
更新2
不需要检查网址,添加http://方案,网站会自动重定向到正确的目的地。
答案 0 :(得分:2)
在您的情况下,我认为您需要执行HEAD请求并检查结果。 例如,使用您的示例网址http://engadget.com。如果响应不存在,请将www添加到此网址并重试。
NSMutableURLRequest request = [NSMutableURLRequest requestWithURL:inURL];
[request setHTTPMethod:@"HEAD"];
NSURLConnection connection = [NSURLConnection connectionWithRequest:request delegate:self];
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response {
if ([(NSHTTPURLResponse *)response statusCode] == 200) {
// url exists
}
}