web-dev-qa-db-fra.com

iOS: WebView Chargement d'une URL

J'essaie d'ouvrir l'URL suivante dans UIWebView mais elle ne parvient pas à se charger alors que je la change en: 

 http://www.google.com

fonctionne bien.

L'URL que je veux charger est: 

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

METTRE À JOUR:

J'ai délibérément échappé aux guillemets, sinon cela me donne une erreur ... J'ai vérifié l'URL en l'ouvrant dans mon navigateur (sur un ordinateur portable) et cela fonctionne parfaitement

L'URL dans le navigateur:

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}
13
iDev

Votre ligne de code semble compliquée, mais au fond, c’est très simple.

Vous devez séparer ce code d'un seul support en plusieurs lignes plus lisibles. Cela vous permettra également de vous connecter et de vérifier l'URL que vous avez réellement créée, comme ceci:

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

Mise à jour: je vois que vous avez ajouté l'URL complète. Webview ne parvient en effet pas à charger cette URL (erreur UIWebkit 101).

La partie de l'URL qui cause le problème est le caractère '#' et le dictionnaire qui suit dans les paramètres. Vous devriez encoder cette partie de l'URL.

Essaye ça:

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

La méthode d'échappement que j'ai utilisée:

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

Je voudrais essayer d'encoder tous les éléments clé/valeur dans votre URL. Plus précisément, les accolades ({}) et les symboles dièse (#) peuvent être à l'origine d'un problème.

1
bgolson