当只需要一个请求时,“dataTaskWithRequest”请求 NSMutableRequest 两次

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 版本的应用程序可以在类似的请求下正常工作。有什么原因吗?

ssc*_*ara 4

阅读你的问题后,我浏览了苹果参考文档。它说 thenwebViewDidFinishLoad在加载 webview 中的每个帧后调用。这是文档

webViewDidFinishLoad:在 Web 视图完成加载框架后发送。

请与服务器核实一次运行发出了多少个请求。是 2 或 1。还想知道代码中的 print 语句执行了多少次 print("response = \(response)")。因为我不同意这种说法。

在您的问题中发现您调用 NSURLSession dataTaskWithRequest 并在 Web 视图中加载请求。两次调用同一件事也可能会出现问题。如果您想在 webview 中打开请求,请不要使用 NSURLSession 任务请求。通过注释来运行它task.resume()