如何使用uiwebview使用swift登录网站?

Emr*_*GEN 3 uiwebview ios uiwebviewdelegate swift

我想尝试在ios应用程序中使用UIWebView登录网页.但是,我不知道怎么能这样做.我正在展示网站

let url = NSURL(string: "http://m.falalem.com")
let request = NSURLRequest(URL: url!)
webView.loadRequest(request)
Run Code Online (Sandbox Code Playgroud)

我想使用我的用户名和密码参数登录此页面.登录页面 - > http://m.falalem.com/Login 登录页面后 - > http://m.falalem.com/User-Info

如何使用uiwebview登录此页面?请帮忙!

Mic*_*nas 7

一般登录网页(使用JS,PHP等)会使用POST请求,对吧?

特别是在您的网站上,对于hello使用密码world的用户,POST如下所示:

http://m.falalem.com/System/Falalem?LoginUser=c7e28a618886dba19eac0892ad90cf51&RTrn=http%3A%2F%2Fm.falalem.com%2FUser-Info&EPostam=hello&Sifrem=world

您的特定请求标头位于:

LoginUser: c7e28a618886dba19eac0892ad90cf51
RTrn: http://m.falalem.com/User-Info
EPostam (user): hello
Sifrem (password): world
Run Code Online (Sandbox Code Playgroud)

同样,在Swift中,您将加载UIWebView一个类似的请求.据推测,您正在从UITextFields 接收用户名和密码,并将使用它们登录到UIWebView:

@IBOutlet weak var usernameTextField: UITextField!

// Note: you will want to secure this either by checking the box 
// in Attributes Inspector or programmatically using 
// `passwordTextField.secureTextEntry = true`
@IBOutlet weak var passwordTextField: UITextField!

@IBOutlet weak var webView: UIWebView!

...

// fire when the UIButton for "sign in" or "Giri? Yap" is pressed
@IBAction func signIn(sender: AnyObject) {
    var url = NSURL(string: "http://m.falalem.com/System/Falalem")

    // Note that you will want to use a `NSMutableURLRequest` 
    // because otherwise, you will not be able to edit the `request.HTTPMethod`
    var request = NSMutableURLRequest(URL: url!)

    // You need to specifically tell the request what HTTP method to use
    // (e.g., GET, POST, PUT, DELETE)
    request.HTTPMethod = "POST"

    // Is this generated/an API key? If generated per user, use `var`
    let loginUser: String = "c7e28a618886dba19eac0892ad90cf51"

    // The page you want to go to after login
    let redirectPage: String = "http://m.falalem.com/User-Info"

    // Get the user's credentials from the `UITextField`s
    var username: String = usernameTextField.text
    var password: String = passwordTextField.text

    // Concatenating everything together
    var userCredentials: String = "EPostam=\(username)&Sifrem=\(password)"
    var bodyData: String = "\(userCredentials)&RTrn=\(redirectPage)&LoginUser=\(loginUser)"

    // Encode the bodyData string into a 
    request.HTTPBody = bodyData.dataUsingEncoding(NSUTF8StringEncoding)

    // load the UIWebView `webView` with this request
    webView.loadRequest(request)
}
Run Code Online (Sandbox Code Playgroud)

现在,如果您没有通过UITextFields 获取用户的凭据,则可以继续

let url = NSURL(string: "http://m.falalem.com")
let request = NSURLRequest(URL: url!)
webView.loadRequest(request)
Run Code Online (Sandbox Code Playgroud)

因为用户只需通过移动网站输入他/她的凭据并以这种方式重定向.

最后,您可能希望使用SSL,因为否则您将密码(或哈希)作为纯文本发送,这是不安全的.

  • @EmreBEGEN你以不同的方式解决了吗?我很想听听怎么样!还没问题.:) (2认同)