1:Request请求
public func request(
_ url: URLConvertible,
method: HTTPMethod = .get,
parameters: Parameters? = nil,
encoding: ParameterEncoding = URLEncoding.default,
headers: HTTPHeaders? = nil)
-> DataRequest
{
print("打印方法 \(method)")
print("helelo")
return SessionManager.default.request(
url,
method: method,
parameters: parameters,
encoding: encoding,
headers: headers
)
}
/// Creates a `DataRequest` using the default `SessionManager` to retrieve the contents of the specified `url`,
/// `method`, `parameters`, `encoding` and `headers`.
///
/// - parameter url: The URL.
/// - parameter method: The HTTP method. `.get` by default.
/// - parameter parameters: The parameters. `nil` by default.
/// - parameter encoding: The parameter encoding. `URLEncoding.default` by default.
/// - parameter headers: The HTTP headers. `nil` by default.
///
默认请求是get
,HTTPMethod
是个枚举值。
public enum HTTPMethod: String {
case options = "OPTIONS"
case get = "GET"
case head = "HEAD"
case post = "POST"
case put = "PUT"
case patch = "PATCH"
case delete = "DELETE"
case trace = "TRACE"
case connect = "CONNECT"
}
print("打印方法 \(method)")
的结果是get
po method.rawvalue
获取到枚举值的值是什么GET
。
return SessionManager.default.request
是个单利。
public static let `default`: SessionManager = {
let configuration = URLSessionConfiguration.default
configuration.httpAdditionalHeaders = SessionManager.defaultHTTPHeaders
return SessionManager(configuration: configuration)
}()
SessionManager.defaultHTTPHeaders
设置header
信息,原因是为了保证请求的安全过滤垃圾请求。通过标示一些特殊的标记。返回SessionManager(configuration: configuration)
private func commonInit(serverTrustPolicyManager: ServerTrustPolicyManager?) {
session.serverTrustPolicyManager = serverTrustPolicyManager
delegate.sessionManager = self
delegate.sessionDidFinishEventsForBackgroundURLSession = { [weak self] session in
guard let strongSelf = self else { return }
DispatchQueue.main.async { strongSelf.backgroundCompletionHandler?() }
}//后台下载事件回传。
}
在这里做了代理移交。delegate.sessionManager = self
。依赖减少,事件回传。
注。1;po NSHomeDirectory()
输出沙盒路径。*
2;遇到不会的去github
找Issues
*3;SessionManager.default
不能直接使用,要创建自己的manager
网友评论