Jee*_*n_7 5 uiwebview nsmutableurlrequest ios swift
我有一个安全的 webView,它显示客户加载他的钱包。我传递安全信息 MPIN(如一次性密码)。有问题的是
@IBOutlet weak var loading: UIActivityIndicatorView!
@IBOutlet var lblLoading: UILabel!
@IBOutlet weak var mob_webview: UIWebView!
override func viewDidLoad()
{
super.viewDidLoad()
mob_webview.hidden = true
mob_webview.delegate=self
cmmn.createDatabase()
linkgot = cmmn.geturl()
link="http://*****************************************.jsp?"
let request = NSMutableURLRequest(URL: NSURL(string: link)!)
request.HTTPMethod = "POST"
let postString = "recharge_type=\(_catcode)&amount=\(_amountfiled_got)&mobileNo=\(cmmn.getPhoneNumber())&prePostLan=\(prePostLan)&stdCode=\(_stdCode)&accNo=\(accNo)&deduct_frm=B&rcMobileNum=\(_numberfiled_got)&mobOperator=\(_merch_code)&operator=\(_operatr)&rcType=\(_rec_type)&mpin=\(_mpin)"
request.HTTPBody = postString.dataUsingEncoding(NSUTF8StringEncoding)
let task = NSURLSession.sharedSession().dataTaskWithRequest(request) {
data, response, error in
if error != nil {
print("error=\(error)")
return
}
print("response = \(response)")
let responseString = NSString(data: data!, encoding: NSUTF8StringEncoding)
print("responseString = \(responseString)")
}
task.resume()
mob_webview.loadRequest(request)
// Do any additional setup after loading the view.
}
func webViewDidFinishLoad(webView_Pages: UIWebView)
{
mob_webview.hidden = false
loading.hidden = true
lblLoading.hidden=true
print("OK")
}
Run Code Online (Sandbox Code Playgroud)
在服务器中,如果用户输入错误的 MPIN 3 次,他就会被阻止。这是根据服务器中错误的 MPIN 命中数来完成的。由于某种原因,我的 Web 视图发出两次请求(即调用加载请求的链接两次),即使它只加载一次。假设如果客户输入错误的 MPIN 并加载 Web 视图,则该链接被调用两次,他将失去 2 次机会输入正确的 MPIN。我们的 Android 版本的应用程序可以在类似的请求下正常工作。有什么原因吗?
阅读你的问题后,我浏览了苹果参考文档。它说 thenwebViewDidFinishLoad在加载 webview 中的每个帧后调用。这是文档
webViewDidFinishLoad:在 Web 视图完成加载框架后发送。
请与服务器核实一次运行发出了多少个请求。是 2 或 1。还想知道代码中的 print 语句执行了多少次 print("response = \(response)")。因为我不同意这种说法。
在您的问题中发现您调用 NSURLSession dataTaskWithRequest 并在 Web 视图中加载请求。两次调用同一件事也可能会出现问题。如果您想在 webview 中打开请求,请不要使用 NSURLSession 任务请求。通过注释来运行它task.resume()。