iOS 使用 URLSession 发送 Form-Data 请求 - 上传文本和文件
在 iOS 中,可以使用 NSURLSession 来发送 form-data 请求。以下是一个示例代码:
// 创建 URL
let url = URL(string: 'http://example.com/upload')!
// 创建 request
var request = URLRequest(url: url)
request.httpMethod = "POST"
// 创建 form-data 数据
let formData = NSMutableData()
// 添加文本参数
formData.appendString("--(boundary)\r\n")
formData.appendString("Content-Disposition: form-data; name='username'\r\n\r\n")
formData.appendString("John Doe\r\n")
// 添加文件参数
formData.appendString("--(boundary)\r\n")
formData.appendString("Content-Disposition: form-data; name='file'; filename='image.jpg'\r\n")
formData.appendString("Content-Type: image/jpeg\r\n\r\n")
formData.append(imageData) // imageData 是文件的二进制数据
formData.appendString("\r\n")
// 添加结束符
formData.appendString("--(boundary)--\r\n")
// 设置请求头
request.setValue("multipart/form-data; boundary=(boundary)", forHTTPHeaderField: "Content-Type")
request.setValue("(formData.length)", forHTTPHeaderField: "Content-Length")
// 设置请求体
request.httpBody = formData as Data
// 发送请求
let task = URLSession.shared.dataTask(with: request) { (data, response, error) in
if let error = error {
print("Error: (error)")
} else if let data = data {
// 处理响应数据
let responseString = String(data: data, encoding: .utf8)
print("Response: (responseString)")
}
}
task.resume()
以上代码创建了一个 POST 请求,并使用 form-data 格式来上传一个文本参数和一个文件参数。你可以根据自己的需求修改和扩展这个示例代码。
原文地址: https://www.cveoy.top/t/topic/qe16 著作权归作者所有。请勿转载和采集!