Swift Alamofire每两个请求之一“请求超时”

时间:2018-08-02 12:23:24

标签: swift alamofire

在两次使用相同URL调用loadHeader的每一次中,出现“请求超时”错误。在第一次尝试中,该函数有效,我设法获取并解析了响应。第二,我超时了。第三,它起作用了,第四次又超时了。是关于我的代码还是关于服务器?我尝试等待再尝试,因为它可能是服务器的某些安全协议,但它没有任何改变。

这是错误代码:

FAILURE: Error Domain=NSURLErrorDomain Code=-1001 "The request timed out." 

这是我的代码:

func loadHeader(url: String){

    let parameters = ["foo": "bar"]
    Alamofire.request(url, method: .get, parameters: parameters, encoding: JSONEncoding.default)
        .validate { request, response, data in
            // Custom evaluation closure now includes data (allows you to parse data to dig out error messages if necessary)
            return .success
        }
        .responseJSON {
            response in
            let json=response.data
            self.jsonToObjectHeader(json: json!)
    }
}


func jsonToObjectHeader(json:Data){
    do{
        databases = try JSONDecoder().decode(responseHeader.self,from: json)            
        if databases.ordersHeader.count == 0 {
            let alert = UIAlertView(title: "empty",message: "empty",delegate: nil,cancelButtonTitle: "OK")
            alert.show()
        }

        else {
            for i in 0...databases.ordersHeader.count-1 {
                myArray2.append(databases.ordersHeader[i].productName!)
            }
        }


        DispatchQueue.main.async {
            self.myTableView.reloadData()
            self.myTableView.tableFooterView = UIView()
        }

        //print(databases.ordersHeader[0].companyAddress)
    }catch let jsonErr {
        print(jsonErr)
    }
}

1 个答案:

答案 0 :(得分:0)

我添加了

let parameters = ["foo": "bar"]

思考我必须给出函数中的参数。刚刚更新

Alamofire.request(url, method: .get, parameters: parameters, encoding: JSONEncoding.default)

Alamofire.request(url, method: .get, parameters: nil, encoding: JSONEncoding.default)

它解决了问题。如果有人遇到类似情况,则发布此消息。