我一直在开发 iOS 应用程序并使用 Alamofire 4.0/Swift 3.1/Xcode 8.3.3 调用我的网络服务。
在我的 iPhone 运行 OS 10.0 之前,一切似乎都工作正常。我今天将 iPhone 更新到 10.3.3,突然我的网络服务停止工作。
这是我一直在使用的代码:
class func verifyLoginCredentials(_ username: String, password: String, completion: @escaping (_ type: ResponseType , _ response : Int, _ message: String) -> Void) {
var serviceURL = baseURL + "&task=login&email=" + username + "&pwd=" + password
serviceURL = serviceURL.addingPercentEncoding(withAllowedCharacters: CharacterSet.urlQueryAllowed)!
let url = URL(string: serviceURL)
let authHeader = ["":""]
print(url!)
request(url!, method: .post, parameters: nil, encoding: JSONEncoding.default, headers: authHeader).responseJSON(options:
JSONSerialization.ReadingOptions.mutableContainers) { (serverResponse) -> Void in
switch serverResponse.result {
case .success(let JSON):
debugPrint(JSON)
if (JSON as AnyObject).value(forKey: "status") as! Int == 1 {
completion( ResponseType.kresponseTypeSuccess,(JSON as AnyObject).value(forKey: "status") as! Int, "")
// Set User Session
CFunctions.setLoginSession(JSON as AnyObject)
} else {
completion( ResponseType.kresponseTypeSuccess,(JSON as AnyObject).value(forKey: "status") as! Int, (JSON as AnyObject).value(forKey: "response") as! String)
}
case .failure(let error):
let dataString = String(data: serverResponse.data!, encoding: String.Encoding.utf8)
print("verifyLoginCredentials Request failed with error: \(String(describing: dataString))")
completion(ResponseType.kResponseTypeFail, error._code, "Service failed")
}
}
}
这是我在控制台中得到的内容:
http://198.1.109.253/~ecc2014/api/?verifyKey=abcdefghijklmnopqrstuvwxyz&task=login&email=user@yopmail.com&pwd=secret
verifyLoginCredentials Request failed with error: Optional("<!DOCTYPE HTML PUBLIC \"-//IETF//DTD HTML 2.0//EN\">\n<html><head>\n<title>400 Bad Request</title>\n</head><body>\n<h1>Bad Request</h1>\n<p>Your browser sent a request that this server could not understand.<br />\n</p>\n<hr>\n<address>Apache/2.4.27 (cPanel) OpenSSL/1.0.2k mod_bwlimited/1.4 Server at 198.1.109.253 Port 80</address>\n</body></html>\n")
这里我想再提一件事。我的 Web 服务之前是从旧域 ( http://www.exoticcarclub.net/api/ ?) 调用的。现在我的网络服务已经转移到了新的服务器,而且它的域名还没有指向,所以他们给了我 http://198.1.109.253/~ecc2014/api/ ?替换为.我认为这也可能是罪魁祸首。
有人能指出 OS 10.3.3 中发生了什么吗?任何帮助将不胜感激。谢谢。
最佳答案
我想我自己弄明白了。
- 刚刚删除了
let authHeader = ["":""]
行。 - 从请求行中删除了
headers: authHeader
参数。 - 最终删除了
(选项:JSONSerialization.ReadingOptions.mutableContainers)
。
关于iOS OS 10.3.3 与 Alamofire POST(内容类型 JSON)问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45549292/