2015-12-10 85 views
1

我正在使用UIWebView製作一個簡單的網絡瀏覽器。用戶在地址欄上輸入地址 - >檢查它。UIWebView如何獲取正確的URL?

1.如果文本是URL - >加載請求

2.如果文本是串 - >執行了谷歌搜索

在第一種情況下,如果字符串的格式是: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

不需要檢查URL,添加http://方案和網站會自動重定向到正確的目的地。

回答

2

你的情況我認爲你需要執行HEAD請求並檢查結果。 例如,您的示例網址爲http://engadget.com。如果響應不存在,請將www添加到此URL並重試。

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 
    } 
} 
+0

感謝您的幫助,但我的問題是添加正確的HTTP,HTTPS,有或沒有www到格式爲abc.xyz的網址。 – Nick

+0

您是否曾嘗試將前綴http://添加到此網址格式? –

+0

是的,但一些網站,如engadget.com,它有www部分。如果你不包含www,你將無法加載它。 – Nick