Die zweite Frage ist tatsächlich leichter zu beantworten. Schauen Sie sich die stringWithContentsOfURL:encoding:error:
Methode von NSString an - Sie können eine URL als Instanz von NSURL übergeben (die leicht über NSString instanziiert werden kann) und eine Zeichenfolge mit dem vollständigen Inhalt der Seite unter dieser URL zurückgeben. Beispielsweise:
NSString *googleString = @"http://www.google.com";
NSURL *googleURL = [NSURL URLWithString:googleString];
NSError *error;
NSString *googlePage = [NSString stringWithContentsOfURL:googleURL
encoding:NSASCIIStringEncoding
error:&error];
googlePage
Enthält nach dem Ausführen dieses Codes den HTML- Code für www.google.com sowie error
alle beim Abrufen aufgetretenen Fehler. (Sie sollten den Inhalt error
nach dem Abrufen überprüfen .)
Der andere Weg (von einer UIWebView aus) ist etwas schwieriger, aber im Grunde das gleiche Konzept. Sie müssen die Anforderung aus der Ansicht abrufen und dann wie zuvor abrufen:
NSURL *requestURL = [[yourWebView request] URL];
NSError *error;
NSString *page = [NSString stringWithContentsOfURL:requestURL
encoding:NSASCIIStringEncoding
error:&error];
BEARBEITEN: Beide Methoden haben jedoch einen Leistungseinbruch, da sie die Anforderung zweimal ausführen. Sie können dies umgehen, indem Sie den Inhalt aus einer aktuell geladenen UIWebView mithilfe der folgenden stringByEvaluatingJavascriptFromString:
Methode abrufen :
NSString *html = [yourWebView stringByEvaluatingJavaScriptFromString:
@"document.body.innerHTML"];
Dadurch wird der aktuelle HTML-Inhalt der Ansicht mithilfe des Dokumentobjektmodells abgerufen, das JavaScript analysiert und als NSString * von HTML angezeigt.
Eine andere Möglichkeit besteht darin, Ihre Anfrage zuerst programmgesteuert zu bearbeiten und dann die UIWebView von der von Ihnen angeforderten zu laden. Nehmen wir an, Sie nehmen das zweite Beispiel oben, in dem Sie NSString *page
als Ergebnis eines Anrufs bei haben stringWithContentsOfURL:encoding:error:
. Sie können diese Zeichenfolge dann mithilfe loadHTMLString:baseURL:
von in die Webansicht verschieben, vorausgesetzt, Sie haben auch an der von Ihnen angeforderten NSURL festgehalten:
[yourWebView loadHTMLString:page baseURL:requestURL];
Ich bin mir jedoch nicht sicher, ob hier JavaScript ausgeführt wird, das auf der von Ihnen geladenen Seite gefunden wurde (der Methodenname loadHTMLString
ist etwas mehrdeutig, und die Dokumente sagen nicht viel darüber aus).
Für mehr Information: