iOS OS 10.3.3 与 Alamofire POST(内容类型 JSON)问题

标签 ios iphone swift alamofire

我一直在开发 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 中发生了什么吗?任何帮助将不胜感激。谢谢。

最佳答案

我想我自己弄明白了。

  1. 刚刚删除了 let authHeader = ["":""] 行。
  2. 从请求行中删除了 headers: authHeader 参数。
  3. 最终删除了(选项:JSONSerialization.ReadingOptions.mutableContainers)

关于iOS OS 10.3.3 与 Alamofire POST(内容类型 JSON)问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45549292/

相关文章:

ios - 点击单元格时的 TableView 动画

ios - 现在 MPMoviePlayerPlaybackDidFinishReasonUserInfoKey 已被弃用,找到播放结束原因的最佳方法是什么?

iphone - SKPaymentTransaction.originalTransaction.transactionReceipt 为零

iphone - UIActivityIndi​​catorView 卡住

ios - 是否可以在swift 4的代码中关闭wifi或将iPhone切换到离线模式?

ios - SpriteKit 坐标系困惑

ios - RealmSwift 初始值设定项 - Xcode 修复它一直出错

iOS 从导航 Controller 子类设置工具栏项

ios - 从 PFObject 访问 NSArray 中的项目

objective-c - 如何在 iOS/OS X 中将 HTML 转换为 Markdown?有什么方法可以在应用程序中使用 pandoc 吗?