如何使用 UrlSession.DataTaskPublisher 调用 post 网络服务?
How to call a post web service with UrlSession.DataTaskPublisher?
我有一个简单的问题,我只能在 documentation 中看到 dataTaskPublisher
,我可以通过它调用获取网络服务,但如何调用 post 网络服务哪个可以 return 发布者?
将构造函数与 URLRequest
一起使用,并使用您需要的任何 HTTP 方法准备请求。
/// Returns a publisher that wraps a URL session data task for a given URL request.
///
/// The publisher publishes data when the task completes, or terminates if the task fails with an error.
/// - Parameter request: The URL request for which to create a data task.
/// - Returns: A publisher that wraps a data task for the URL request.
public func dataTaskPublisher(for request: URLRequest) -> URLSession.DataTaskPublisher
您可以定义一个请求并在您的 dataTaskPublisher
中调用它,如下所示:
var request = URLRequest(url: URL(string: "url")!)
let session = URLSession.shared
request.httpMethod = "POST"
request.addValue("application/json", forHTTPHeaderField: "Content-Type")
request.addValue("application/json", forHTTPHeaderField: "Accept")
request.HTTPBody = try! JSONSerialization.dataWithJSONObject(parameters, options: [])
session.dataTaskPublisher(for: request)
我有一个简单的问题,我只能在 documentation 中看到 dataTaskPublisher
,我可以通过它调用获取网络服务,但如何调用 post 网络服务哪个可以 return 发布者?
将构造函数与 URLRequest
一起使用,并使用您需要的任何 HTTP 方法准备请求。
/// Returns a publisher that wraps a URL session data task for a given URL request. /// /// The publisher publishes data when the task completes, or terminates if the task fails with an error. /// - Parameter request: The URL request for which to create a data task. /// - Returns: A publisher that wraps a data task for the URL request. public func dataTaskPublisher(for request: URLRequest) -> URLSession.DataTaskPublisher
您可以定义一个请求并在您的 dataTaskPublisher
中调用它,如下所示:
var request = URLRequest(url: URL(string: "url")!)
let session = URLSession.shared
request.httpMethod = "POST"
request.addValue("application/json", forHTTPHeaderField: "Content-Type")
request.addValue("application/json", forHTTPHeaderField: "Accept")
request.HTTPBody = try! JSONSerialization.dataWithJSONObject(parameters, options: [])
session.dataTaskPublisher(for: request)