我使用以下代码设置了一个简单的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,结果相同。
任何帮助将不胜感激。
答案 0 :(得分:0)
将此问题归结为开发人员错误...我指向一个旧文件。