Skip to content
This repository has been archived by the owner on Oct 17, 2021. It is now read-only.

Session

mattt edited this page Sep 18, 2020 · 2 revisions

Session

Session creates and manages Alamofire's Request types during their lifetimes. It also provides common functionality for all Requests, including queuing, interception, trust management, redirect handling, and response cache handling.

open class Session

Inheritance

RequestDelegate

Initializers

init(session:​delegate:​rootQueue:​startRequestsImmediately:​requestQueue:​serializationQueue:​interceptor:​serverTrustManager:​redirectHandler:​cachedResponseHandler:​eventMonitors:​)

Creates a Session from a URLSession and other parameters.

public init(session:​ URLSession, delegate:​ SessionDelegate, rootQueue:​ DispatchQueue, startRequestsImmediately:​ Bool = true, requestQueue:​ DispatchQueue? = nil, serializationQueue:​ DispatchQueue? = nil, interceptor:​ RequestInterceptor? = nil, serverTrustManager:​ ServerTrustManager? = nil, redirectHandler:​ RedirectHandler? = nil, cachedResponseHandler:​ CachedResponseHandler? = nil, eventMonitors:[EventMonitor] = [])

Parameters

  • session:​ Underlying URLSession for this instance.
  • delegate:​ SessionDelegate that handles session's delegate callbacks as well as Request interaction.
  • rootQueue:​ Root DispatchQueue for all internal callbacks and state updates. MUST be a serial queue.
  • startRequestsImmediately:​ Determines whether this instance will automatically start all Requests. true by default. If set to false, all Requests created must have .resume() called. on them for them to start.
  • requestQueue:​ DispatchQueue on which to perform URLRequest creation. By default this queue will use the rootQueue as its target. A separate queue can be used if it's determined request creation is a bottleneck, but that should only be done after careful testing and profiling. nil by default.
  • serializationQueue:​ DispatchQueue on which to perform all response serialization. By default this queue will use the rootQueue as its target. A separate queue can be used if it's determined response serialization is a bottleneck, but that should only be done after careful testing and profiling. nil by default.
  • interceptor:​ RequestInterceptor to be used for all Requests created by this instance. nil by default.
  • serverTrustManager:​ ServerTrustManager to be used for all trust evaluations by this instance. nil by default.
  • redirectHandler:​ RedirectHandler to be used by all Requests created by this instance. nil by default.
  • cachedResponseHandler:​ CachedResponseHandler to be used by all Requests created by this instance. nil by default.
  • eventMonitors:​ Additional EventMonitors used by the instance. Alamofire always adds a AlamofireNotifications EventMonitor to the array passed here. [] by default.

init(configuration:​delegate:​rootQueue:​startRequestsImmediately:​requestQueue:​serializationQueue:​interceptor:​serverTrustManager:​redirectHandler:​cachedResponseHandler:​eventMonitors:​)

Creates a Session from a URLSessionConfiguration.

public convenience init(configuration:​ URLSessionConfiguration = URLSessionConfiguration.af.default, delegate:​ SessionDelegate = SessionDelegate(), rootQueue:​ DispatchQueue = DispatchQueue(label:"org.alamofire.session.rootQueue"), startRequestsImmediately:​ Bool = true, requestQueue:​ DispatchQueue? = nil, serializationQueue:​ DispatchQueue? = nil, interceptor:​ RequestInterceptor? = nil, serverTrustManager:​ ServerTrustManager? = nil, redirectHandler:​ RedirectHandler? = nil, cachedResponseHandler:​ CachedResponseHandler? = nil, eventMonitors:[EventMonitor] = [])

Parameters

  • configuration:​ URLSessionConfiguration to be used to create the underlying URLSession. Changes to this value after being passed to this initializer will have no effect. URLSessionConfiguration.af.default by default.
  • delegate:​ SessionDelegate that handles session's delegate callbacks as well as Request interaction. SessionDelegate() by default.
  • rootQueue:​ Root DispatchQueue for all internal callbacks and state updates. MUST be a serial queue. DispatchQueue(label:​ "org.alamofire.session.rootQueue") by default.
  • startRequestsImmediately:​ Determines whether this instance will automatically start all Requests. true by default. If set to false, all Requests created must have .resume() called. on them for them to start.
  • requestQueue:​ DispatchQueue on which to perform URLRequest creation. By default this queue will use the rootQueue as its target. A separate queue can be used if it's determined request creation is a bottleneck, but that should only be done after careful testing and profiling. nil by default.
  • serializationQueue:​ DispatchQueue on which to perform all response serialization. By default this queue will use the rootQueue as its target. A separate queue can be used if it's determined response serialization is a bottleneck, but that should only be done after careful testing and profiling. nil by default.
  • interceptor:​ RequestInterceptor to be used for all Requests created by this instance. nil by default.
  • serverTrustManager:​ ServerTrustManager to be used for all trust evaluations by this instance. nil by default.
  • redirectHandler:​ RedirectHandler to be used by all Requests created by this instance. nil by default.
  • cachedResponseHandler:​ CachedResponseHandler to be used by all Requests created by this instance. nil by default.
  • eventMonitors:​ Additional EventMonitors used by the instance. Alamofire always adds a AlamofireNotifications EventMonitor to the array passed here. [] by default.

Properties

`default`

Shared singleton instance used by all AF.request APIs. Cannot be modified.

let `default`

session

Underlying URLSession used to create URLSessionTasks for this instance, and for which this instance's delegate handles URLSessionDelegate callbacks.

let session:​ URLSession

delegate

Instance's SessionDelegate, which handles the URLSessionDelegate methods and Request interaction.

let delegate:​ SessionDelegate

rootQueue

Root DispatchQueue for all internal callbacks and state update. MUST be a serial queue.

let rootQueue:​ DispatchQueue

startRequestsImmediately

Value determining whether this instance automatically calls resume() on all created Requests.

let startRequestsImmediately:​ Bool

requestQueue

DispatchQueue on which URLRequests are created asynchronously. By default this queue uses rootQueue as its target, but a separate queue can be used if request creation is determined to be a bottleneck. Always profile and test before introducing an additional queue.

let requestQueue:​ DispatchQueue

serializationQueue

DispatchQueue passed to all Requests on which they perform their response serialization. By default this queue uses rootQueue as its target but a separate queue can be used if response serialization is determined to be a bottleneck. Always profile and test before introducing an additional queue.

let serializationQueue:​ DispatchQueue

interceptor

RequestInterceptor used for all Request created by the instance. RequestInterceptors can also be set on a per-Request basis, in which case the Request's interceptor takes precedence over this value.

let interceptor:​ RequestInterceptor?

serverTrustManager

ServerTrustManager instance used to evaluate all trust challenges and provide certificate and key pinning.

let serverTrustManager:​ ServerTrustManager?

redirectHandler

RedirectHandler instance used to provide customization for request redirection.

let redirectHandler:​ RedirectHandler?

cachedResponseHandler

CachedResponseHandler instance used to provide customization of cached response handling.

let cachedResponseHandler:​ CachedResponseHandler?

eventMonitor

CompositeEventMonitor used to compose Alamofire's defaultEventMonitors and any passed EventMonitors.

let eventMonitor:​ CompositeEventMonitor

defaultEventMonitors

EventMonitors included in all instances. [AlamofireNotifications()] by default.

let defaultEventMonitors:[EventMonitor] = [AlamofireNotifications()]

sessionConfiguration

var sessionConfiguration:​ URLSessionConfiguration

startImmediately

var startImmediately:​ Bool

Methods

cancelAllRequests(completingOnQueue:​completion:​)

Cancel all active Requests, optionally calling a completion handler when complete.

public func cancelAllRequests(completingOnQueue queue:​ DispatchQueue = .main, completion:​ (() -> Void)? = nil)

Parameters

  • queue:​ DispatchQueue on which the completion handler is run. .main by default.
  • completion:​ Closure to be called when all Requests have been cancelled.

request(_:​method:​parameters:​encoding:​headers:​interceptor:​)

Creates a DataRequest from a URLRequest created using the passed components and a RequestInterceptor.

open func request(_ convertible:​ URLConvertible, method:​ HTTPMethod = .get, parameters:​ Parameters? = nil, encoding:​ ParameterEncoding = URLEncoding.default, headers:​ HTTPHeaders? = nil, interceptor:​ RequestInterceptor? = nil) -> DataRequest

Parameters

  • convertible:​ URLConvertible value to be used as the URLRequest's URL.
  • method:​ HTTPMethod for the URLRequest. .get by default.
  • parameters:​ Parameters (a.k.a. [String:​ Any]) value to be encoded into the URLRequest. nil by default.
  • encoding:​ ParameterEncoding to be used to encode the parameters value into the URLRequest. URLEncoding.default by default.
  • headers:​ HTTPHeaders value to be added to the URLRequest. nil by default.
  • interceptor:​ RequestInterceptor value to be used by the returned DataRequest. nil by default.

Returns

The created DataRequest.

request(_:​method:​parameters:​encoder:​headers:​interceptor:​)

Creates a DataRequest from a URLRequest created using the passed components, Encodable parameters, and a RequestInterceptor.

open func request<Parameters:​ Encodable>(_ convertible:​ URLConvertible, method:​ HTTPMethod = .get, parameters:​ Parameters? = nil, encoder:​ ParameterEncoder = URLEncodedFormParameterEncoder.default, headers:​ HTTPHeaders? = nil, interceptor:​ RequestInterceptor? = nil) -> DataRequest

Parameters

  • convertible:​ URLConvertible value to be used as the URLRequest's URL.
  • method:​ HTTPMethod for the URLRequest. .get by default.
  • parameters:​ Encodable value to be encoded into the URLRequest. nil by default.
  • encoder:​ ParameterEncoder to be used to encode the parameters value into the URLRequest. URLEncodedFormParameterEncoder.default by default.
  • headers:​ HTTPHeaders value to be added to the URLRequest. nil by default.
  • interceptor:​ RequestInterceptor value to be used by the returned DataRequest. nil by default.

Returns

The created DataRequest.

request(_:​interceptor:​)

Creates a DataRequest from a URLRequestConvertible value and a RequestInterceptor.

open func request(_ convertible:​ URLRequestConvertible, interceptor:​ RequestInterceptor? = nil) -> DataRequest

Parameters

  • convertible:​ URLRequestConvertible value to be used to create the URLRequest.
  • interceptor:​ RequestInterceptor value to be used by the returned DataRequest. nil by default.

Returns

The created DataRequest.

download(_:​method:​parameters:​encoding:​headers:​interceptor:​to:​)

Creates a DownloadRequest using a URLRequest created using the passed components, RequestInterceptor, and Destination.

open func download(_ convertible:​ URLConvertible, method:​ HTTPMethod = .get, parameters:​ Parameters? = nil, encoding:​ ParameterEncoding = URLEncoding.default, headers:​ HTTPHeaders? = nil, interceptor:​ RequestInterceptor? = nil, to destination:​ DownloadRequest.Destination? = nil) -> DownloadRequest

Parameters

  • convertible:​ URLConvertible value to be used as the URLRequest's URL.
  • method:​ HTTPMethod for the URLRequest. .get by default.
  • parameters:​ Parameters (a.k.a. [String:​ Any]) value to be encoded into the URLRequest. nil by default.
  • encoding:​ ParameterEncoding to be used to encode the parameters value into the URLRequest. Defaults to URLEncoding.default.
  • headers:​ HTTPHeaders value to be added to the URLRequest. nil by default.
  • interceptor:​ RequestInterceptor value to be used by the returned DataRequest. nil by default.
  • destination:​ DownloadRequest.Destination closure used to determine how and where the downloaded file should be moved. nil by default.

Returns

The created DownloadRequest.

download(_:​method:​parameters:​encoder:​headers:​interceptor:​to:​)

Creates a DownloadRequest from a URLRequest created using the passed components, Encodable parameters, and a RequestInterceptor.

open func download<Parameters:​ Encodable>(_ convertible:​ URLConvertible, method:​ HTTPMethod = .get, parameters:​ Parameters? = nil, encoder:​ ParameterEncoder = URLEncodedFormParameterEncoder.default, headers:​ HTTPHeaders? = nil, interceptor:​ RequestInterceptor? = nil, to destination:​ DownloadRequest.Destination? = nil) -> DownloadRequest

Parameters

  • convertible:​ URLConvertible value to be used as the URLRequest's URL.
  • method:​ HTTPMethod for the URLRequest. .get by default.
  • parameters:​ Value conforming to Encodable to be encoded into the URLRequest. nil by default.
  • encoder:​ ParameterEncoder to be used to encode the parameters value into the URLRequest. Defaults to URLEncodedFormParameterEncoder.default.
  • headers:​ HTTPHeaders value to be added to the URLRequest. nil by default.
  • interceptor:​ RequestInterceptor value to be used by the returned DataRequest. nil by default.
  • destination:​ DownloadRequest.Destination closure used to determine how and where the downloaded file should be moved. nil by default.

Returns

The created DownloadRequest.

download(_:​interceptor:​to:​)

Creates a DownloadRequest from a URLRequestConvertible value, a RequestInterceptor, and a Destination.

open func download(_ convertible:​ URLRequestConvertible, interceptor:​ RequestInterceptor? = nil, to destination:​ DownloadRequest.Destination? = nil) -> DownloadRequest

Parameters

  • convertible:​ URLRequestConvertible value to be used to create the URLRequest.
  • interceptor:​ RequestInterceptor value to be used by the returned DataRequest. nil by default.
  • destination:​ DownloadRequest.Destination closure used to determine how and where the downloaded file should be moved. nil by default.

Returns

The created DownloadRequest.

download(resumingWith:​interceptor:​to:​)

Creates a DownloadRequest from the resumeData produced from a previously cancelled DownloadRequest, as well as a RequestInterceptor, and a Destination.

open func download(resumingWith data:​ Data, interceptor:​ RequestInterceptor? = nil, to destination:​ DownloadRequest.Destination? = nil) -> DownloadRequest

Parameters

  • data:​ The resume data from a previously cancelled DownloadRequest or URLSessionDownloadTask.
  • interceptor:​ RequestInterceptor value to be used by the returned DataRequest. nil by default.
  • destination:​ DownloadRequest.Destination closure used to determine how and where the downloaded file should be moved. nil by default.

Returns

The created DownloadRequest.

upload(_:​to:​method:​headers:​interceptor:​fileManager:​)

Creates an UploadRequest for the given Data, URLRequest components, and RequestInterceptor.

open func upload(_ data:​ Data, to convertible:​ URLConvertible, method:​ HTTPMethod = .post, headers:​ HTTPHeaders? = nil, interceptor:​ RequestInterceptor? = nil, fileManager:​ FileManager = .default) -> UploadRequest

Parameters

  • data:​ The Data to upload.
  • convertible:​ URLConvertible value to be used as the URLRequest's URL.
  • method:​ HTTPMethod for the URLRequest. .post by default.
  • headers:​ HTTPHeaders value to be added to the URLRequest. nil by default.
  • interceptor:​ RequestInterceptor value to be used by the returned DataRequest. nil by default.
  • fileManager:​ FileManager instance to be used by the returned UploadRequest. .default instance by default.

Returns

The created UploadRequest.

upload(_:​with:​interceptor:​fileManager:​)

Creates an UploadRequest for the given Data using the URLRequestConvertible value and RequestInterceptor.

open func upload(_ data:​ Data, with convertible:​ URLRequestConvertible, interceptor:​ RequestInterceptor? = nil, fileManager:​ FileManager = .default) -> UploadRequest

Parameters

  • data:​ The Data to upload.
  • convertible:​ URLRequestConvertible value to be used to create the URLRequest.
  • interceptor:​ RequestInterceptor value to be used by the returned DataRequest. nil by default.
  • fileManager:​ FileManager instance to be used by the returned UploadRequest. .default instance by default.

Returns

The created UploadRequest.

upload(_:​to:​method:​headers:​interceptor:​fileManager:​)

Creates an UploadRequest for the file at the given file URL, using a URLRequest from the provided components and RequestInterceptor.

open func upload(_ fileURL:​ URL, to convertible:​ URLConvertible, method:​ HTTPMethod = .post, headers:​ HTTPHeaders? = nil, interceptor:​ RequestInterceptor? = nil, fileManager:​ FileManager = .default) -> UploadRequest

Parameters

  • fileURL:​ The URL of the file to upload.
  • convertible:​ URLConvertible value to be used as the URLRequest's URL.
  • method:​ HTTPMethod for the URLRequest. .post by default.
  • headers:​ HTTPHeaders value to be added to the URLRequest. nil by default.
  • interceptor:​ RequestInterceptor value to be used by the returned UploadRequest. nil by default.
  • fileManager:​ FileManager instance to be used by the returned UploadRequest. .default instance by default.

Returns

The created UploadRequest.

upload(_:​with:​interceptor:​fileManager:​)

Creates an UploadRequest for the file at the given file URL using the URLRequestConvertible value and RequestInterceptor.

open func upload(_ fileURL:​ URL, with convertible:​ URLRequestConvertible, interceptor:​ RequestInterceptor? = nil, fileManager:​ FileManager = .default) -> UploadRequest

Parameters

  • fileURL:​ The URL of the file to upload.
  • convertible:​ URLRequestConvertible value to be used to create the URLRequest.
  • interceptor:​ RequestInterceptor value to be used by the returned DataRequest. nil by default.
  • fileManager:​ FileManager instance to be used by the returned UploadRequest. .default instance by default.

Returns

The created UploadRequest.

upload(_:​to:​method:​headers:​interceptor:​fileManager:​)

Creates an UploadRequest from the InputStream provided using a URLRequest from the provided components and RequestInterceptor.

open func upload(_ stream:​ InputStream, to convertible:​ URLConvertible, method:​ HTTPMethod = .post, headers:​ HTTPHeaders? = nil, interceptor:​ RequestInterceptor? = nil, fileManager:​ FileManager = .default) -> UploadRequest

Parameters

  • stream:​ The InputStream that provides the data to upload.
  • convertible:​ URLConvertible value to be used as the URLRequest's URL.
  • method:​ HTTPMethod for the URLRequest. .post by default.
  • headers:​ HTTPHeaders value to be added to the URLRequest. nil by default.
  • interceptor:​ RequestInterceptor value to be used by the returned DataRequest. nil by default.
  • fileManager:​ FileManager instance to be used by the returned UploadRequest. .default instance by default.

Returns

The created UploadRequest.

upload(_:​with:​interceptor:​fileManager:​)

Creates an UploadRequest from the provided InputStream using the URLRequestConvertible value and RequestInterceptor.

open func upload(_ stream:​ InputStream, with convertible:​ URLRequestConvertible, interceptor:​ RequestInterceptor? = nil, fileManager:​ FileManager = .default) -> UploadRequest

Parameters

  • stream:​ The InputStream that provides the data to upload.
  • convertible:​ URLRequestConvertible value to be used to create the URLRequest.
  • interceptor:​ RequestInterceptor value to be used by the returned DataRequest. nil by default.
  • fileManager:​ FileManager instance to be used by the returned UploadRequest. .default instance by default.

Returns

The created UploadRequest.

upload(multipartFormData:​to:​usingThreshold:​method:​headers:​interceptor:​fileManager:​)

Creates an UploadRequest for the multipart form data built using a closure and sent using the provided URLRequest components and RequestInterceptor.

open func upload(multipartFormData:@escaping (MultipartFormData) -> Void, to url:​ URLConvertible, usingThreshold encodingMemoryThreshold:​ UInt64 = MultipartFormData.encodingMemoryThreshold, method:​ HTTPMethod = .post, headers:​ HTTPHeaders? = nil, interceptor:​ RequestInterceptor? = nil, fileManager:​ FileManager = .default) -> UploadRequest

It is important to understand the memory implications of uploading MultipartFormData. If the cumulative payload is small, encoding the data in-memory and directly uploading to a server is the by far the most efficient approach. However, if the payload is too large, encoding the data in-memory could cause your app to be terminated. Larger payloads must first be written to disk using input and output streams to keep the memory footprint low, then the data can be uploaded as a stream from the resulting file. Streaming from disk MUST be used for larger payloads such as video content.

The encodingMemoryThreshold parameter allows Alamofire to automatically determine whether to encode in-memory or stream from disk. If the content length of the MultipartFormData is below the encodingMemoryThreshold, encoding takes place in-memory. If the content length exceeds the threshold, the data is streamed to disk during the encoding process. Then the result is uploaded as data or as a stream depending on which encoding technique was used.

Parameters

  • multipartFormData:​ MultipartFormData building closure.
  • convertible:​ URLConvertible value to be used as the URLRequest's URL.
  • encodingMemoryThreshold:​ Byte threshold used to determine whether the form data is encoded into memory or onto disk before being uploaded. MultipartFormData.encodingMemoryThreshold by default.
  • method:​ HTTPMethod for the URLRequest. .post by default.
  • headers:​ HTTPHeaders value to be added to the URLRequest. nil by default.
  • interceptor:​ RequestInterceptor value to be used by the returned DataRequest. nil by default.
  • fileManager:​ FileManager to be used if the form data exceeds the memory threshold and is written to disk before being uploaded. .default instance by default.

Returns

The created UploadRequest.

upload(multipartFormData:​with:​usingThreshold:​interceptor:​fileManager:​)

Creates an UploadRequest using a MultipartFormData building closure, the provided URLRequestConvertible value, and a RequestInterceptor.

open func upload(multipartFormData:@escaping (MultipartFormData) -> Void, with request:​ URLRequestConvertible, usingThreshold encodingMemoryThreshold:​ UInt64 = MultipartFormData.encodingMemoryThreshold, interceptor:​ RequestInterceptor? = nil, fileManager:​ FileManager = .default) -> UploadRequest

It is important to understand the memory implications of uploading MultipartFormData. If the cumulative payload is small, encoding the data in-memory and directly uploading to a server is the by far the most efficient approach. However, if the payload is too large, encoding the data in-memory could cause your app to be terminated. Larger payloads must first be written to disk using input and output streams to keep the memory footprint low, then the data can be uploaded as a stream from the resulting file. Streaming from disk MUST be used for larger payloads such as video content.

The encodingMemoryThreshold parameter allows Alamofire to automatically determine whether to encode in-memory or stream from disk. If the content length of the MultipartFormData is below the encodingMemoryThreshold, encoding takes place in-memory. If the content length exceeds the threshold, the data is streamed to disk during the encoding process. Then the result is uploaded as data or as a stream depending on which encoding technique was used.

Parameters

  • multipartFormData:​ MultipartFormData building closure.
  • request:​ URLRequestConvertible value to be used to create the URLRequest.
  • encodingMemoryThreshold:​ Byte threshold used to determine whether the form data is encoded into memory or onto disk before being uploaded. MultipartFormData.encodingMemoryThreshold by default.
  • interceptor:​ RequestInterceptor value to be used by the returned DataRequest. nil by default.
  • fileManager:​ FileManager to be used if the form data exceeds the memory threshold and is written to disk before being uploaded. .default instance by default.

Returns

The created UploadRequest.

upload(multipartFormData:​to:​usingThreshold:​method:​headers:​interceptor:​fileManager:​)

Creates an UploadRequest for the prebuilt MultipartFormData value using the provided URLRequest components and RequestInterceptor.

open func upload(multipartFormData:​ MultipartFormData, to url:​ URLConvertible, usingThreshold encodingMemoryThreshold:​ UInt64 = MultipartFormData.encodingMemoryThreshold, method:​ HTTPMethod = .post, headers:​ HTTPHeaders? = nil, interceptor:​ RequestInterceptor? = nil, fileManager:​ FileManager = .default) -> UploadRequest

It is important to understand the memory implications of uploading MultipartFormData. If the cumulative payload is small, encoding the data in-memory and directly uploading to a server is the by far the most efficient approach. However, if the payload is too large, encoding the data in-memory could cause your app to be terminated. Larger payloads must first be written to disk using input and output streams to keep the memory footprint low, then the data can be uploaded as a stream from the resulting file. Streaming from disk MUST be used for larger payloads such as video content.

The encodingMemoryThreshold parameter allows Alamofire to automatically determine whether to encode in-memory or stream from disk. If the content length of the MultipartFormData is below the encodingMemoryThreshold, encoding takes place in-memory. If the content length exceeds the threshold, the data is streamed to disk during the encoding process. Then the result is uploaded as data or as a stream depending on which encoding technique was used.

Parameters

  • multipartFormData:​ MultipartFormData instance to upload.
  • url:​ URLConvertible value to be used as the URLRequest's URL.
  • encodingMemoryThreshold:​ Byte threshold used to determine whether the form data is encoded into memory or onto disk before being uploaded. MultipartFormData.encodingMemoryThreshold by default.
  • method:​ HTTPMethod for the URLRequest. .post by default.
  • headers:​ HTTPHeaders value to be added to the URLRequest. nil by default.
  • interceptor:​ RequestInterceptor value to be used by the returned DataRequest. nil by default.
  • fileManager:​ FileManager to be used if the form data exceeds the memory threshold and is written to disk before being uploaded. .default instance by default.

Returns

The created UploadRequest.

upload(multipartFormData:​with:​usingThreshold:​interceptor:​fileManager:​)

Creates an UploadRequest for the prebuilt MultipartFormData value using the providing URLRequestConvertible value and RequestInterceptor.

open func upload(multipartFormData:​ MultipartFormData, with request:​ URLRequestConvertible, usingThreshold encodingMemoryThreshold:​ UInt64 = MultipartFormData.encodingMemoryThreshold, interceptor:​ RequestInterceptor? = nil, fileManager:​ FileManager = .default) -> UploadRequest

It is important to understand the memory implications of uploading MultipartFormData. If the cumulative payload is small, encoding the data in-memory and directly uploading to a server is the by far the most efficient approach. However, if the payload is too large, encoding the data in-memory could cause your app to be terminated. Larger payloads must first be written to disk using input and output streams to keep the memory footprint low, then the data can be uploaded as a stream from the resulting file. Streaming from disk MUST be used for larger payloads such as video content.

The encodingMemoryThreshold parameter allows Alamofire to automatically determine whether to encode in-memory or stream from disk. If the content length of the MultipartFormData is below the encodingMemoryThreshold, encoding takes place in-memory. If the content length exceeds the threshold, the data is streamed to disk during the encoding process. Then the result is uploaded as data or as a stream depending on which encoding technique was used.

Parameters

  • multipartFormData:​ MultipartFormData instance to upload.
  • request:​ URLRequestConvertible value to be used to create the URLRequest.
  • encodingMemoryThreshold:​ Byte threshold used to determine whether the form data is encoded into memory or onto disk before being uploaded. MultipartFormData.encodingMemoryThreshold by default.
  • interceptor:​ RequestInterceptor value to be used by the returned DataRequest. nil by default.
  • fileManager:​ FileManager instance to be used by the returned UploadRequest. .default instance by default.

Returns

The created UploadRequest.

cleanup(after:​)

public func cleanup(after request:​ Request)

retryResult(for:​dueTo:​completion:​)

public func retryResult(for request:​ Request, dueTo error:​ AFError, completion:@escaping (RetryResult) -> Void)

retryRequest(_:​withDelay:​)

public func retryRequest(_ request:​ Request, withDelay timeDelay:​ TimeInterval?)
Types
Protocols
Global Typealiases
Clone this wiki locally