ios - "dataTaskWithRequest"当只需要一个请求时,两次请求NSMutableRequest

标签 ios swift uiwebview nsmutableurlrequest

我有一个安全的 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")

}

服务器日志中的响应: enter image description here enter image description here

在服务器中,如果用户输错了 3 次 MPIN,他就会被阻止。这是根据服务器中错误的 MPIN 命中数来完成的。出于某种原因,我的 WebView 发出了两次请求(即调用两次加载请求的链接),即使它只加载了一次。假设如果客户输入错误的 MPIN 并加载 WebView ,链接被调用两次他失去了 2 次机会输入正确的 MPIN。我们APP的android版本可以正常使用类似的请求。有什么原因吗?

最佳答案

阅读您的问题后,我浏览了 apple 引用文档。它说 webViewDidFinishLoad 在 webview 中加载每个帧后被调用。 Here is document

webViewDidFinishLoad: Sent after a web view finishes loading a frame.

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

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

关于ios - "dataTaskWithRequest"当只需要一个请求时,两次请求NSMutableRequest,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42344596/

相关文章:

ios - 设置 map 坐标范围默认显示 (0, 0)

ios - 当点击 UIcollectionviewcell 放大单元格照片并打开新的 View Controller 时

ios - 使 UITabController 成为另一个 UITabController 的选项卡

ios - 快速 URL 处理

ios - iOS 中使用 native 功能的 HTML 列表

javascript - 使用 JavaScript 在 UIWebView 中查找和自动填写 HTML 登录表单

ios - 如何从 iOS 应用程序使用 POST 发送 NSData?

ios - 如何在底部的每个屏幕中显示 View

ios - 在 Swift 中初始化一个具有多种值类型的数组

javascript - 如何从javascript调用swift函数