2010-01-14 12 views
5

Potrzebuję kontrolować stronę internetową, która jest ładowana do UIWebView, jak wysyłanie danych postów i używanie żądań pobierania. Po każdym żądaniu odpowiedź powinna być załadowana jako ciąg do zmiennej.iPhone SDK: kontroluj strony internetowe w UIWebView programowo

Powodem tego jest to, że próbuję pobrać dane ze strony internetowej, która nie ma publicznego interfejsu API i używa uwierzytelniania użytkownika opartego na plikach cookie. Dlatego chcę zalogować użytkownika, pobrać niektóre dane z tej strony i przedstawić wyniki.

Czy coś takiego jest posible?

EDIT: Właśnie natknąłem metody stringByEvaluatingJavaScriptFromString. Czy byłoby możliwe użycie tej metody do kontrolowania treści w UIWebView za pomocą JS? Jak przesłać formularz internetowy i poczekać, aż strona się załaduje i otrzyma dane odpowiedzi?

EDIT 2: Wystarczy znaleźć ramy, które mogą być pomocne ASIHTTPRequest

Odpowiedz

2

Oczywiście jest to możliwe. Po prostu zrób kod sieciowy, a następnie zrzuć wynikowy kod HTML do 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]; 

Jeśli chcesz przetwarzać odpowiedź przed wyświetleniem go, a następnie będziemy chcieli zrobić coś wzdłuż linii:

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

Należy także pamiętać, że można użyć JavaScript kontrolować przeglądarkę :

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

Dzięki za szybką odpowiedź. Czy NSMutableURLRequest zajmie się plikami cookie auth? A może po prostu wyśle ​​prośbę - jak ogień i zapomnij? – dan

+1

Nie wiem, czy mam być szczery. Używam MonoTouch przez ostatnie 6 miesięcy. Apple ma dobre dokumenty; w przeciwnym razie otwórz nowe pytanie SO. –

Powiązane problemy