iOS: WebView Loading a url

后端 未结 2 946
既然无缘
既然无缘 2021-02-19 14:05

I am trying to open the following url in UIWebView but it fails to load whereas changing it to:

 http://www.google.com

works fine

2条回答
  •  一个人的身影
    2021-02-19 14:52

    Your line of code looks convoluted, but basically it is a very simple one.

    You should breakup this code from a one liner to multiple lines that are more readable. That will also allow you to log and check the URL you actually created, like so:

    NSLog(@"My url: %@", urlString);

    Update: I see you added the full url. Webview indeed fails to load that url (UIWebkit error 101).

    The part of the url that causes the problem is the '#' character and dictionary that follows in the params. You should url encode that part of the url.

    Try this:

    NSString *address = @"http://m.forrent.com/search.php?";
    NSString *params1 = @"address=92115&beds=&baths=&price_to=0";
    
    // URL encode the problematic part of the url.
    NSString *params2 = @"#{%22lat%22:%220%22,%22lon%22:%220%22,%22distance%22:%2225%22,%22seed%22:%221622727896%22,%22is_sort_default%22:%221%22,%22sort_by%22:%22%22,%22page%22:%221%22,%22startIndex%22:%220%22,%22address%22:%2292115%22,%22beds%22:%22%22,%22baths%22:%22%22,%22price_to%22:%220%22}";
    params2 = [self escape:params2];
    
    // Build the url and loadRequest
    NSString *urlString = [NSString stringWithFormat:@"%@%@%@",address,params1,params2];
    [self.webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:urlString]]];
    

    The escaping method I used:

    - (NSString *)escape:(NSString *)text
    {
        return (__bridge NSString *)CFURLCreateStringByAddingPercentEscapes(NULL,
                                                                            (__bridge CFStringRef)text, NULL,
                                                                            (CFStringRef)@"!*'();:@&=+$,/?%#[]",
                                                                            kCFStringEncodingUTF8);
    }
    

提交回复
热议问题