我正在使用Swift 3和Moya pod.
我使用Basic Usage配置了我需要的所有内容,但是我找不到任何可以设置超时的函数或变量(对于每个请求或特定请求).
我怎样才能做到这一点?
ask*_*boe 29
haydarKarkin在对GitHub的评论中提供了答案.下面的代码片段直接从他的评论中复制.
您可以通过创建自定义Alamofire会话管理器为Moya提供程序创建自定义配置:
import Foundation
import Alamofire
class DefaultAlamofireManager: Alamofire.SessionManager {
static let sharedManager: DefaultAlamofireManager = {
let configuration = URLSessionConfiguration.default
configuration.httpAdditionalHeaders = Alamofire.SessionManager.defaultHTTPHeaders
configuration.timeoutIntervalForRequest = 20 // as seconds, you can set your request timeout
configuration.timeoutIntervalForResource = 20 // as seconds, you can set your resource timeout
configuration.requestCachePolicy = .useProtocolCachePolicy
return DefaultAlamofireManager(configuration: configuration)
}()
}
Run Code Online (Sandbox Code Playgroud)
然后在声明您的提供商时包含自定义Alamofire Manager:
let Provider = MoyaProvider<GithubAPI>(endpointClosure: endpointClosure,
manager: DefaultAlamofireManager.sharedManager,
plugins: [NetworkActivityPlugin(networkActivityClosure: networkActivityClosure)])
Run Code Online (Sandbox Code Playgroud)
@askielboe 对Alamofire 5 的精彩回答已更新:
class DefaultAlamofireSession: Alamofire.Session {
static let shared: DefaultAlamofireSession = {
let configuration = URLSessionConfiguration.default
configuration.headers = .default
configuration.timeoutIntervalForRequest = 20 // as seconds, you can set your request timeout
configuration.timeoutIntervalForResource = 20 // as seconds, you can set your resource timeout
configuration.requestCachePolicy = .useProtocolCachePolicy
return DefaultAlamofireSession(configuration: configuration)
}()
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3462 次 |
最近记录: |