【笔记】Swift的发送请求

前言

Swift的发送HTTP请求

发送GET请求

通过命名函数执行回调

定义回调函数

  • 在回调函数中处理响应
1
2
3
4
5
6
7
8
9
10
11
12
func handle(data: Data?, response: URLResponse?, error: Error?) {
// 处理失败请求
if error != nil {
print(error!)
return
}
// 处理正常请求
if let safeData = data {
let dataString = String(data: safeData, encoding: .utf8)
print(dataString!)
}
}

发起请求

<url>:请求URL
handle(data: response: error: ):回调函数

1
2
3
let session = URLSession(configuration: .default)
let task = session.dataTask(with: "<url>", completionHandler: handle(data: response: error: ))
task.resume()

通过匿名函数执行回调

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
let session = URLSession(configuration: .default)
guard let url = URL(string: "<url>") else { return }
var urlRequest = URLRequest(url: url)

let task = session.dataTask(with: urlRequest) { (data: Data?, response: URLResponse?, error: Error?) in
// 处理失败请求
if error != nil {
print(error!)
return
}
// 处理正常请求
if let safeData = data {
let dataString = String(data: safeData, encoding: .utf8)
print(dataString!)
}
}

task.resume()

发送POST请求

通过匿名函数执行回调

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
let session = URLSession(configuration: .default)
guard let url = URL(string: "http://127.0.0.1:80/") else { return }
var urlRequest = URLRequest(url: url)
urlRequest.httpMethod = "POST"
urlRequest.addValue("application/x-www-form-urlencoded", forHTTPHeaderField: "Content-Type")
let bodyData = "key=value"
urlRequest.httpBody = bodyData.data(using: .utf8)

let task = session.dataTask(with: urlRequest) { (data: Data?, response: URLResponse?, error: Error?) in
// 处理失败请求
if error != nil {
print(error!)
return
}
// 处理正常请求
if let safeData = data {
let dataString = String(data: safeData, encoding: .utf8)
print(dataString!)
}
}

task.resume()

完成

参考文献

哔哩哔哩——疯狂滴小黑
阿里云开发者社区——1910801116781953