代码之家  ›  专栏  ›  技术社区  ›  PvDev

iOS Swift 4中的Alamofire post方法?

  •  0
  • PvDev  · 技术社区  · 8 年前

    为了在这里获得推送通知,我使用alamofire post方法(pod版本alamofire 4.5)发送positem、token,比如count和currentname。调用post方法时,我没有得到任何响应,它也没有显示任何错误。 我尝试在alamofire函数中保留断点,它调用alamofire.requestion,然后退出函数。

    以下是试图将post方法发送到后端的代码:

      func postNotification(postItem: String, post: Post) {
    
        print("Get token from post:::",post.token)
        print(postItem)
        let token = UserDefaults.standard.string(forKey: "token")
    
    
    
    
        let headers: HTTPHeaders = ["Content-Type" :"application/x-www-form-urlencoded"]
    
           let parameters : [String:Any] = ["count":post.likeCount!, "likedby":currentName, "postId=":postItem, "token": post.token!]
        Alamofire.request("http://highavenue.co:9000/likesnotification/", method: .post, parameters: parameters, encoding: JSONEncoding.default, headers: nil).responseJSON { (response:DataResponse<Any>) in
    
            switch(response.result) {
            case .success(_):
                if let data = response.result.value{
                    print(data)
                }
                break
    
            case .failure(_):
                print(response.result.error as Any)
                break
    
            }
        }
    
    }
    

    像这样获取控制台错误

     2018-07-10 14:21:07.980212+0530 HighAvenue[10584:4236493] Task <B5FC98AB-C3FE- 
    4D4F-9A93-72D3FFE35DF7>.<1> finished with error - code: -1001
    Optional(Error Domain=NSURLErrorDomain Code=-1001 "The request timed out." 
    UserInfo={NSUnderlyingError=0x1c0e478f0 {Error Domain=kCFErrorDomainCFNetwork Code=-1001 "(null)" UserInfo={_kCFStreamErrorCodeKey=-2102, _kCFStreamErrorDomainKey=4}}, NSErrorFailingURLStringKey=http://highavenue.co:9000/likesnotification/, NSErrorFailingURLKey=http://highavenue.co:9000/likesnotification/, _kCFStreamErrorDomainKey=4, _kCFStreamErrorCodeKey=-2102, NSLocalizedDescription=The request timed out.})
    
    1 回复  |  直到 8 年前
        1
  •  0
  •   Najam    8 年前

    let request = NSMutableURLRequest(url: URL(string: "")!)
    request.httpMethod = "POST"
    request.setValue("application/json", forHTTPHeaderField: "Content-Type")
    request.timeoutInterval = 120 // 120 secs
    let values = ["key": "value"]
    request.httpBody = try! JSONSerialization.data(withJSONObject: values, options: [])
    Alamofire.request(request as! URLRequestConvertible).responseJSON {
        response in
        // do whatever you want here
    }
    

    代码中的第二个错误是您试图访问 http url 默认情况下是不允许的,因此您必须从应用程序中绕过此安全性,请参考此答案以便从应用程序中删除此安全层。 The resource could not be loaded because the App Transport Security policy requires the use of a secure connection

    推荐文章