我想尝试在ios应用程序中使用UIWebView登录网页。但是,我不知道怎么能这样做。我正在使用
显示网站let url = NSURL(string: "http://m.falalem.com")
let request = NSURLRequest(URL: url!)
webView.loadRequest(request)
我想使用我的用户名和密码参数登录此页面。 登录页面 - > http://m.falalem.com/Login 登录页面后 - > http://m.falalem.com/User-Info
如何使用uiwebview登录此页面? 请帮忙!
答案 0 :(得分:7)
一般情况下登录网页(使用JS,PHP等)会使用POST
请求,对吗?
具体在您的网站上,对于密码为hello
的用户world
,POST
如下所示:
您的特定请求标题是:
LoginUser: c7e28a618886dba19eac0892ad90cf51
RTrn: http://m.falalem.com/User-Info
EPostam (user): hello
Sifrem (password): world
同样,在Swift中,您将加载具有类似请求的UIWebView
。据推测,您收到UITextField
s的用户名和密码,并将使用它们登录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)
}
现在,如果您没有通过UITextField
获取用户的凭据,则可以继续
let url = NSURL(string: "http://m.falalem.com")
let request = NSURLRequest(URL: url!)
webView.loadRequest(request)
因为用户只需通过移动网站输入他/她的凭据,然后以这种方式重定向。
最后,您可能希望使用SSL,否则您将以纯文本形式发送密码(或哈希),这是不安全的。