iOS:WebView加载url

我试图在UIWebView打开以下url,但它无法加载,而将其更改为:

  http://www.google.com 

工作正常。

我想加载的url是:

 [webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:[NSString stringWithFormat:@"%@%@%@%@%@",@"http://m.forrent.com/search.php?address=",[[bookListing objectForKey:@"Data"] objectForKey:@"zip"],@"&beds=&baths=&price_to=0#{\"lat\":\"0\",\"lon\":\"0\",\"distance\":\"25\",\"seed\":\"1622727896\",\"is_sort_default\":\"1\",\"sort_by\":\"\",\"page\":\"1\",\"startIndex\":\"0\",\"address\":\"",[[bookListing objectForKey:@"Data"] objectForKey:@"zip"],@"\",\"beds\":\"\",\"baths\":\"\",\"price_to\":\"0\"}"]]]]; 

更新:

我有意逃避双引号,否则会给我一个错误。 我通过在浏览器中打开(在笔记本电脑上),检查了url,它工作得很好:

浏览器中的url:

 http://m.forrent.com/search.php?address=92115&beds=&baths=&price_to=0#{%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} 

你的代码行看起来很复杂,但基本上它是一个非常简单的代码。

你应该把这个代码从一个class轮分解成多个可读性更高的行。 这也将允许你logging和检查你实际创build的URL,如下所示:

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

更新:我看到你添加了完整的url。 Webview确实无法加载该URL(UIWebkit错误101)。

造成问题的url部分是params后面的“#”字符和字典。 你应该url编码的部分url。

尝试这个:

 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]]]; 

我使用的转义方法是:

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

我会尝试编码您的url中的所有键/值项目。 具体来说,大括号({})和哈希(#)符号可能会导致问题。