UIWebView如何获取正确的URL?

时间:2015-12-10 03:21:01

标签: ios objective-c uiwebview

我使用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://方案,网站会自动重定向到正确的目的地。

1 个答案:

答案 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
    }
}