Swift:URLRequest没有清除缓存

时间:2017-11-19 13:59:59

标签: swift caching urlrequest

我使用以下代码设置了一个简单的PHP服务文件:

<?php 

clearstatcache();


if ($_GET["method"] == "register") { 
    registerUser($_POST);
}

function registerUser($arrUser) { 

    $json = json_encode($arrUser);
    echo $json;


}

?>

在我的应用程序中,我使用此代码调用它:

func postData(dictData:Dictionary<String, Any>, method:String) {

    //set up the request

    let myURL = URL(string:"http://www.xxxxxxxxx.com/cs_services.php?method=register")

        var myRequest = URLRequest(url:myURL!)

        //post data
        var strPostParams = " "
        for(key, value) in dictData {
            strPostParams = strPostParams + "\(key)=\(value)&"
        }

        myRequest.httpMethod = "POST"
        myRequest.httpBody = strPostParams.data(using: .utf8)
        myRequest.cachePolicy = .reloadIgnoringLocalAndRemoteCacheData

        let myDataTask = URLSession.shared.dataTask(with: myRequest) { (data, response, error) in

            if error != nil {
                print(error?.localizedDescription)
            }

            guard let data = data, let response = response  else {
                print("error with data or response")
                return
            }

            do {

                let jsonResponse = try JSONSerialization.jsonObject(with: data, options: .allowFragments)

                let strData = String(data: data, encoding: String.Encoding.utf8) as String!

                if let dictJSON = jsonResponse as? [String: Any] {
                    print("Dictionary:\(dictJSON)\n\(String(describing: strData))")
                } else {
                    print("JSON Response:\(jsonResponse)")
                }

            } catch {
                let strData = String(data: data, encoding: String.Encoding.utf8) as String!
                print("json error: \(error.localizedDescription)\n\(String(describing: strData))")
            }
        }

        myDataTask.resume()



}

以前我在测试代码并在PHP文件中返回数组(“name”=&gt;“test”)。这很好,因为我能够在我的应用程序代码中看到返回。但是现在我已经改变它以返回POST数据,我仍然得到name = test return。

在浏览器中测试PHP文件按预期输出。我不知道在应用程序中该怎么做。我将URLRequest缓存策略设置为忽略本地和远程。我重置了SIM卡中的数据。从测试iPad Air到iPad Air2切换到系留iPad,结果相同。

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

将此问题归结为开发人员错误...我指向一个旧文件。