2010-01-14 17 views
5

Ich muss eine Website steuern, die in ein UIWebView geladen wird, wie das Senden von Postdaten und die Verwendung von get-Anfragen. Nach jeder Anfrage sollte die Antwort als String in eine Variable geladen werden.iPhone SDK: Webseiten programmgesteuert in UIWebView steuern

Der Grund dafür ist, dass ich versuche, Daten von einer Website abzurufen, die keine öffentliche Web-API hat und Cookie-basierte Benutzerauthentifizierung verwendet. Also möchte ich den Benutzer anmelden, einige Daten von dieser Website abrufen und die Ergebnisse präsentieren.

Ist so etwas möglich?

EDIT: Ich kam nur über die Methode stringByEvaluatingJavaScriptFromString. Wäre es möglich, diese Methode zu verwenden, um den Inhalt innerhalb des UIWebView mit JS zu steuern? Wie ein Webformular senden und warten, bis die Seite fertig geladen ist und die Antwortdaten erhalten hat?

EDIT 2: gerade einen Rahmen, der ASIHTTPRequest

Antwort

2

sicher hilfreich sein könnte, es möglich ist. Tun Sie den Netzwerkcode selbst und speichern Sie den resultierenden HTML-Code in das UIWebView.

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

Denken Sie auch daran, dass Sie JavaScript verwenden können, um den Browser zu steuern:

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

Wenn Sie die Antwort bearbeiten möchten, bevor es angezeigt wird, dann werden Sie etwas entlang der Linien von tun wollen :

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

Danke für Ihre schnelle Antwort. Wird sich NSMutableURLRequest um die Web-Cookies von auth kümmern? Oder wird es nur die Anfrage senden - wie Feuer und vergessen? – dan

+1

Ich weiß es nicht, um ehrlich zu sein. Ich verwende MonoTouch für die letzten 6 Monate. Apple hat gute Dokumente; Öffnen Sie andernfalls eine neue SO-Frage. –