2016-05-05 5 views
0

Ich möchte eine iPhone/iPad iOS-App mit Swift erstellen, die eine bestimmte URL prüft, eine HTML-Seite abruft und analysiert, aber die Web-Interface-Ansicht von UIWebView nicht freigibt. Ich würde mich sehr freuen, wenn die HTML-Ansicht nur zur Authentifizierung des Benutzers beim ersten Mal angezeigt wird und danach die Seite jedes Mal programmgesteuert und direkt aufgerufen wird. Eine Beispielanwendung, die ich denke, das ist MailBuzzr für Hotmail & Outlook.Wie kann UIWebView verwendet werden, um eine Seite zu scrappen, die eine Authentifizierung erfordert?

Ich brauche eine Art Web-Schaber, aber in einigen Fällen z. http://login.live.com es ist ziemlich umständlich zu bekommen, d. H. Sehr komplexe Eingabeform, zweistufige Verifizierung, etc. Ich habe gerade den Zugriff auf mein Live-Konto von UIWebView getestet und es funktioniert auch, wenn zweistufige Verifizierung erforderlich ist. Ich möchte jedoch programmgesteuert dorthin gelangen, ohne die Ansicht dem Benutzer zugänglich zu machen oder sie in irgendeiner Weise zu tarnen.

Gibt es eine Möglichkeit, UIWebView zu verwenden? Alternativen?

Der Code, den ich habe, ist ziemlich trivial:

@IBOutlet var Webview: UIWebView! 
let url = NSURL(string: "https://account.live.com/") 
let request = NSURLRequest(URL: url!) 
Webview.loadRequest(request) 

PS: Ich habe versucht, die Live-Login-Seite mit Mozilla Web Developer Plugin Inspektion und kann nicht Sinn der Parameter (NAP, ANON, t) machen und wie sie berechnet werden. Ich denke, es kann getan werden, aber vielleicht gibt es einen einfacheren Weg mit UIWebView.

Antwort

1

Eine Sache, die Sie tun müssen, ist ein wenig JavaScript zu injizieren, um die Felder zu füllen und den Login-Prozess auszulösen.

Sie einen Ansatz, wie diese (Pseudocode) verwenden können:

NSString *javaScript = @"var field = document.getElementsByTagName('#password')[0]; 
// Set it. 
// Trigger the form submission."; 
[webView stringByEvaluatingJavaScriptFromString:javaScript]; 

Dann können Sie die Seite, indem sie den Inhalt (Pseudo-Code) kratzen:

NSString *html = [webView stringByEvaluatingJavaScriptFromString: @"document.body.innerHTML"]; 
Verwandte Themen