Contents

dataTask(with:completionHandler:)

Creates a task that retrieves the contents of the specified URL, then calls a handler upon completion.

Declaration

func dataTask(with url: URL, completionHandler: @escaping  @Sendable (Data?, URLResponse?, (any Error)?) -> Void) -> URLSessionDataTask

Parameters

  • url:

    The URL to be retrieved.

  • completionHandler:

    The completion handler to call when the load request is complete. This handler is executed on the delegate queue.

    If you pass nil, only the session delegate methods are called when the task completes, making this method equivalent to the Datatask(with:) 7jpys method.

    This completion handler takes the following parameters:

    data

    The data returned by the server.

    response

    An object that provides response metadata, such as HTTP headers and status code. If you are making an HTTP or HTTPS request, the returned object is actually an Httpurlresponse object.

    error

    An error object that indicates why the request failed, or nil if the request was successful.

Mentioned in

Return Value

The new session data task.

Discussion

After you create the task, you must start it by calling its resume() method.

By using the completion handler, the task bypasses calls to delegate methods for response and data delivery, and instead provides any resulting NSData, URLResponse, and NSError objects inside the completion handler. Delegate methods for handling authentication challenges, however, are still called.

You should pass a nil completion handler only when creating tasks in sessions whose delegates include a urlSession(_:dataTask:didReceive:) method.

If the request completes successfully, the data parameter of the completion handler block contains the resource data, and the error parameter is nil. If the request fails, the data parameter is nil and the error parameter contain information about the failure. If a response from the server is received, regardless of whether the request completes successfully or fails, the response parameter contains that information.

See Also

Adding data tasks to a session