Подтвердить что ты не робот

IOS: WebView Загрузка URL-адреса

Я пытаюсь открыть следующий URL-адрес в UIWebView, но он не загружается, а его изменение:

 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\"}"]]]];

UPDATE:

Я намеренно избежал двойных кавычек, иначе это даст мне ошибку. Я проверил 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}
4b9b3361

Ответ 1

Ваша строка кода выглядит запутанной, но в основном она очень простая.

Вы должны разбить этот код с одного лайнера на несколько строк, которые более читабельны. Это также позволит вам зарегистрировать и проверить URL-адрес, который вы создали, например:

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

Обновление: Я вижу, вы добавили полный URL-адрес. Webview действительно не может загрузить этот url (ошибка UIWebkit 101).

Часть URL-адреса, которая вызывает проблему, это символ "#" и словарь, который следует в параметрах. Вы должны кодировать 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);
}

Ответ 2

Я бы попробовал кодировать все элементы ключа/значения в вашем URL-адресе. В частности, фигурные скобки ({}) и символы хеша (#) могут вызывать проблему.