Pertanyaan kedua sebenarnya lebih mudah dijawab. Lihatlah stringWithContentsOfURL:encoding:error:
metode NSString - ini memungkinkan Anda mengirimkan URL sebagai instance NSURL (yang dapat dengan mudah digunakan dari NSString) dan mengembalikan string dengan konten lengkap dari halaman di URL itu. Sebagai contoh:
NSString *googleString = @"http://www.google.com";
NSURL *googleURL = [NSURL URLWithString:googleString];
NSError *error;
NSString *googlePage = [NSString stringWithContentsOfURL:googleURL
encoding:NSASCIIStringEncoding
error:&error];
Setelah menjalankan kode ini, googlePage
akan berisi HTML untuk www.google.com, dan error
akan mengandung kesalahan yang ditemukan dalam pengambilan. (Anda harus memeriksa konten error
setelah pengambilan.)
Pergi ke arah lain (dari UIWebView) agak rumit, tetapi pada dasarnya konsep yang sama. Anda harus menarik permintaan dari tampilan, lalu lakukan pengambilan seperti sebelumnya:
NSURL *requestURL = [[yourWebView request] URL];
NSError *error;
NSString *page = [NSString stringWithContentsOfURL:requestURL
encoding:NSASCIIStringEncoding
error:&error];
EDIT: Kedua metode ini mendapatkan performa yang baik, karena mereka melakukan permintaan dua kali. Anda dapat menyiasatinya dengan mengambil konten dari UIWebView yang saat ini dimuat menggunakan stringByEvaluatingJavascriptFromString:
metodenya, seperti:
NSString *html = [yourWebView stringByEvaluatingJavaScriptFromString:
@"document.body.innerHTML"];
Ini akan mengambil konten HTML saat ini dari tampilan menggunakan Model Objek Dokumen, parsing JavaScript, lalu berikan kepada Anda sebagai NSString * dari HTML.
Cara lain adalah dengan melakukan permintaan Anda secara terprogram terlebih dahulu, lalu muat UIWebView dari apa yang Anda minta. Katakanlah Anda mengambil contoh kedua di atas, di mana Anda memiliki NSString *page
hasil panggilan stringWithContentsOfURL:encoding:error:
. Anda kemudian dapat mendorong string itu ke tampilan web menggunakan loadHTMLString:baseURL:
, dengan asumsi Anda juga memegang NSURL yang Anda minta:
[yourWebView loadHTMLString:page baseURL:requestURL];
Saya tidak yakin, bagaimanapun, apakah ini akan menjalankan JavaScript yang ditemukan di halaman yang Anda muat (nama metode loadHTMLString
,, agak ambigu, dan dokumen tidak banyak bicara tentang hal itu).
Untuk info lebih lanjut: