Alamofire如何设置超时

时间:2019-02-01 11:42:14

标签: ios swift alamofire

我正在使用自己的第一个iOS应用程序,并且正在使用Alamofire进行网络通话。很好,很容易。我在单独的类中实现了Alamofire,将其称为WebserviceHelper。现在我正在整个应用程序中使用此类。但现在我想设置超时时间。

这是我如何在WebserviceHelper类中实现功能的代码段。

  static func requestService(methodName: String, method: HTTPMethod, parameters: Parameters, headers: HTTPHeaders? = nil, showLoaderFlag: Bool, viewController: UIViewController, completion: @escaping (_ success: JSON) -> Void) {

    let reachability = Reachability()!

    /*
     checking for internet connection
     */
    if(reachability.connection != .none) {

        /*
         Showing Loader here
         */
        if(showLoaderFlag){
        ViewControllerUtils.customActivityIndicatory(viewController.view, startAnimate: true)
        }

        print("Web Service Url - \(Common.URL+methodName)")
        print("Parameters - \(parameters)")

        /*
         Request configure
         */

        Alamofire.request(Common.URL+methodName, method: method, parameters: parameters, encoding: JSONEncoding.default, headers: headers) .responseJSON { response in

在这里您可以看到它使用起来很安静。我已经使用了很多方法来设置超时时间,但是它对我不起作用。 this是我尝试过的。以及this链接,但对我没有任何帮助。

你们能帮助我使用Alamofire设置超时吗?

1 个答案:

答案 0 :(得分:1)

您应该尝试URLRequest,它已经在最新的Alamofire中运行,因为我已经实现了它。请参见以下代码:

guard let url = URL(string: "") else { return }
var urlRequest = URLRequest(url: url)
urlRequest.timeoutInterval = TimeInterval(exactly: 30)!  // Set timeout in request of 30 seconds

Alamofire.request(urlRequest).response { (dataResponse) in

}

我希望这会对您有所帮助。