将 curl 转换为 Swift
使用 URLSession 将 curl 命令转换为 Swift 代码。curl2code 通过 WebAssembly 完全在您的浏览器中运行——您的数据保持私密。对于 Kotlin (Android),请尝试我们的 curl 转 Kotlin 转换器。对于 Objective-C,请参阅 curl 转 Objective-C。下方是即插即用的 Swift 示例。
如何从浏览器复制 curl
- 1
打开开发者工具
按 F12 或 Ctrl+Shift+I 打开浏览器开发者工具。
- 2
进入 Network 标签页
点击 Network (网络) 标签页,并执行触发 HTTP 请求的操作。
- 3
复制为 cURL
右键点击请求 → Copy (复制) → Copy as cURL (复制为 cURL)。然后将其粘贴到上方。
常见问题解答
什么是 Swift URLSession?
URLSession 是 Apple 为 iOS、macOS、watchOS 和 tvOS 内置的 HTTP 客户端。它处理数据任务、下载、上传、WebSocket 和后台传输。无需安装包——它是 Foundation 框架的一部分。支持 HTTP/2、缓存和 Cookie 管理。curl2code 为所有 Swift 转换生成 URLSession 代码。
URLSession 对比 Alamofire —— 我该使用哪一个?
URLSession 是内置的,可以满足大多数需求——使用它可以避免第三方依赖。Alamofire 增加了便利性:链式请求构建器、自动重试、响应验证和多部分上传。对于小型项目,URLSession 就足够了。对于类似的内置方法,请参阅我们的 curl 转 Kotlin 转换器 或 curl 转 Objective-C。
如何在 Swift 中处理身份验证?
在 URLRequest 上设置请求头:request.setValue("Bearer \(token)", forHTTPHeaderField: "Authorization")。对于 Basic 认证,使用 Data("\(user):\(pass)".utf8).base64EncodedString() 进行编码。curl2code 会自动将 -u 和 Bearer 请求头标志转换为 Swift 代码。
如何在 Swift 中发送多部分表单数据 (multipart form data)?
手动构建多部分主体:生成边界字符串,使用 CRLF 分隔符附加每个字段/文件,并设置 Content-Type: multipart/form-data; boundary=...。为了更轻松地处理多部分数据,请使用 Alamofire 的 upload(multipartFormData:)。curl2code 处理 URLSession 的 -F 标志转换。
如何在 Swift 中处理 HTTP 错误?
URLSession 在完成回调中返回一个可选的 Error —— 检查其是否为 nil。将响应转换为 HTTPURLResponse 并检查 statusCode。使用 async/await (iOS 15+),在 do/catch 块中使用 try await URLSession.shared.data(for: request) 进行简洁的错误处理。
如何在 URLSession 中使用 async/await?
Swift 5.5+ 原生支持 async/await:let (data, response) = try await URLSession.shared.data(for: request)。这用线性代码取代了完成处理闭包。使用 Task { } 从同步上下文中调用。对于并发请求,使用 async let 或 TaskGroup。有关类似模式,请参阅 curl 转 Dart。
如何在 Swift URLSession 中设置超时?
在 URLSessionConfiguration 上配置:config.timeoutIntervalForRequest = 30(单次请求)和 config.timeoutIntervalForResource = 300(总资源)。或者在单个请求上设置 request.timeoutInterval = 30。这些对应于 curl 的 --max-time 和 --connect-timeout 选项。
如何在 URLSession 中使用代理?
在 URLSessionConfiguration 上设置代理:config.connectionProxyDictionary = [kCFProxyHostNameKey: "proxy", kCFProxyPortNumberKey: 8080]。对于 SOCKS 代理,使用 kCFStreamPropertySOCKSProxy 键。URLSession 也会遵循在 macOS/iOS 设置中配置的系统级代理设置。
如何在 Swift 中发送带有 JSON 正文的 POST 请求?
使用 curl2code 将类似于 curl -X POST -H "Content-Type: application/json" -d "{"key":"value"}" URL 的 curl POST 命令转换为 Swift。生成的代码使用 request.httpBody = try JSONEncoder().encode(data)。curl2code 会自动检测带有 JSON 内容的 -d/--data 标志,并在 URLSession 代码中设置相应的 Content-Type 请求头。
如何在 Swift 中添加 Bearer 令牌授权?
将 curl -H "Authorization: Bearer YOUR_TOKEN" URL 传递给 curl2code,它会生成带有认证请求头的 URLSession 代码:request.setValue("Bearer YOUR_TOKEN", forHTTPHeaderField: "Authorization")。curl2code 会从 -H "Authorization: Bearer ..." 和 --oauth2-bearer 标志中检测 Bearer 令牌。对于 Basic auth,请使用 -u user:pass。
如何在 Swift 中设置 Content-Type 请求头?
curl2code 将 curl -H "Content-Type: application/json" URL 转换为带有正确请求头的 URLSession 代码:request.setValue("application/json", forHTTPHeaderField: "Content-Type")。对于 -d 数据,curl 默认使用 application/x-www-form-urlencoded;对于 -F 表单上传,它使用 multipart/form-data。curl2code 会将每一项映射到正确的 URLSession API。