【问题标题】:UIWebView How to get correct URL?UIWebView 如何获取正确的 URL?
【发布时间】:2015-12-10 03:21:01
【问题描述】:

我正在使用 UIWebView 制作一个简单的网络浏览器。用户在地址栏输入地址 -> 检查它。

1.如果文本是url -> 加载请求

2.如果文本是字符串 -> 执行谷歌搜索

第一种情况,如果string格式为:abc.xyz,如何添加scheme和host? 示例:用户输入 google.com -> 正确为 https://google.com engadget.com -> https://www.engadget.com.

我的问题是如何知道哪个部分必须添加到 url(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://方案,网站会自动重定向到正确的目的地。

【问题讨论】:

    标签: ios objective-c uiwebview


    【解决方案1】:

    在您的情况下,我认为您需要执行 HEAD 请求并检查结果。 例如,使用您的示例 URL 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
        }
    }
    

    【讨论】:

    • 感谢您的帮助,但我的问题是将正确的 http、https、带或不带 www 的网址添加到格式为 abc.xyz 的网址。
    • 是的,但是有些网站,例如 engadget.com,它有 www 部分。如果您不包含 www,您将无法加载它。
    • NSURLConnection 已弃用,根据您的回答,我用 NSURLSeassion 修复了它。谢谢你。
    猜你喜欢
    • 2012-07-09
    • 1970-01-01
    • 1970-01-01
    • 2011-01-30
    • 1970-01-01
    • 1970-01-01
    • 2016-07-20
    • 2023-03-25
    • 1970-01-01
    相关资源
    最近更新 更多