2010-01-14 32 views
5

我需要控制一個加載到UIWebView中的網站,例如發送發佈數據和使用獲取請求。在每個請求之後,響應應該作爲一個字符串加載到一個變量中。iPhone SDK:以編程方式控制UIWebView中的網站

原因是我試圖從沒有公開網頁api的網站抓取數據,並使用基於cookie的用戶身份驗證。所以我想登錄用戶,從該網站獲取一些數據並顯示結果。

是這樣的posible?

編輯:我對面的方法stringByEvaluatingJavaScriptFromString來了。使用這種方法來控制UI中的內容是否可以使用JS?就像提交Web表單並等待頁面完成加載並獲取響應數據一樣?

編輯2:剛剛發現了一個框架,可能會有所幫助當然ASIHTTPRequest

回答

2

這是可能的。只需自己做網絡代碼,然後將生成的HTML轉儲到UIWebView。

// Do your POST 
NSURL *url = [NSURL URLWithString:"http://stackoverflow.com"]; 
NSString *body = @"laadeedaa"; 

NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url]; 
[request setHTTPMethod: @"POST"]; 
[request setHTTPBody: [body dataUsingEncoding:NSUTF8StringEncoding]]; 

// Dump the response to the UIWebView 
[webView loadRequest:request]; 

如果你要處理顯示之前的響應,那麼你會想要做的線沿線的東西:

NSURLResponse *response = nil; 
NSError *error = nil; 
NSData *respData = [NSURLConnection sendSynchronousRequest:request 
             returningResponse:&response 
                error:&error]; 
NSString *respString = [[[NSString alloc] initWithData:respData 
               encoding:NSUTF8StringEncoding] autorelease]; 

NSString *htmlString = [self doSomethingWith:respString]; 

[webView loadHTMLString:htmlString baseURL:@"http://stackoverflow.com"]; 

記住也請您可以使用JavaScript來控制瀏覽器:

- (NSString *)stringByEvaluatingJavaScriptFromString:(NSString *)script 
+0

感謝您的快速回復。 NSMutableURLRequest是否會處理auth網絡cookie?或者它會發送請求 - 就像火,忘了? – dan 2010-01-14 01:24:58

+1

我不知道說實話。我過去6個月一直在使用MonoTouch。蘋果有很好的文檔;否則,打開一個新的SO問題。 – 2010-01-14 02:55:22