webentwicklung-frage-antwort-db.com.de

iOS: WebView Eine URL wird geladen

Ich versuche die folgende URL in UIWebView zu öffnen, kann jedoch nicht geladen werden und ändert sie in: 

 http://www.google.com

funktioniert gut.

Die URL, die ich laden möchte, ist: 

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

AKTUALISIEREN:

Ich bin absichtlich den doppelten Anführungszeichen entkommen, sonst gibt es einen Fehler ... Ich habe die URL durch Öffnen in meinem Browser (auf dem Laptop) überprüft und funktioniert einwandfrei:

Die URL im Browser:

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

Ihre Codezeile sieht kompliziert aus, ist aber im Grunde genommen sehr einfach.

Sie sollten diesen Code von einer Zeile in mehrere Zeilen aufteilen, die besser lesbar sind. Auf diese Weise können Sie auch die URL protokollieren und überprüfen, die Sie tatsächlich erstellt haben:

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

Update: Wie ich sehe, haben Sie die vollständige URL hinzugefügt. Webview kann diese URL in der Tat nicht laden (UIWebkit-Fehler 101).

Der Teil der URL, der das Problem verursacht, ist das # -Zeichen und das Wörterbuch, die in den Parametern folgen. Sie sollten diesen Teil der URL als URL kodieren.

Versuche dies:

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

Die von mir verwendete Fluchtmethode:

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

Ich würde versuchen, alle Schlüssel-/Wertelemente in Ihrer URL zu kodieren. Insbesondere die geschweiften Klammern ({}) und die Hash-Zeichen (#) können ein Problem verursachen.

1
bgolson