將 curl 轉換為 Swift
使用 URLSession 將 curl 指令轉換為 Swift 程式碼。curl2code 完全透過 WebAssembly 在您的瀏覽器中執行 —— 您的資料將保持私密。若需 Kotlin (Android),請嘗試我們的 curl 轉 Kotlin 轉換器。若需 Objective-C,請參閱 curl 轉 Objective-C。下方提供即插即用的 Swift 範例。
如何從瀏覽器複製 curl
- 1
開啟開發者工具 (DevTools)
按下 F12 或 Ctrl+Shift+I 來開啟您的瀏覽器開發者工具。
- 2
前往網路 (Network) 分頁
點擊 Network 分頁,並執行觸發 HTTP 請求的操作。
- 3
複製為 cURL
右鍵點擊該請求 → Copy → Copy as cURL。然後將其貼在上方。
常見問題解答
什麼是 Swift URLSession?
URLSession 是 Apple 為 iOS、macOS、watchOS 和 tvOS 內建的 HTTP 用戶端。它處理數據任務、下載、上傳、WebSocket 和背景傳輸。無需安裝套件 —— 它是 Foundation 的一部分。支援 HTTP/2、快取和 cookie 管理。curl2code 為所有 Swift 轉換生成 URLSession 程式碼。
URLSession vs Alamofire — 我該使用哪一個?
URLSession 是內建的,涵蓋了大多數需求 —— 使用它可以避免第三方依賴。Alamofire 增加了便利性:鏈式請求構建器、自動重試、響應驗證和 multipart 上傳。對於小型專案,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 表單數據?
手動構建 multipart 主體:生成 boundary 字串,使用 CRLF 分隔符附加每個欄位/檔案,並設置 Content-Type: multipart/form-data; boundary=...。為了更輕鬆地處理 multipart,請使用 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。