将 curl 转换为 Objective-C
使用 NSURLSession 将 curl 命令转换为 Objective-C 代码。curl2code 通过 WebAssembly 完全在您的浏览器中运行——您的数据保持私密。对于 Swift,请尝试我们的 curl 转 Swift 转换器。对于 C,请参阅 curl 转 C。下方是即插即用的 Objective-C 示例。
如何从浏览器复制 curl
- 1
打开开发者工具
按 F12 或 Ctrl+Shift+I 打开浏览器开发者工具。
- 2
进入 Network 标签页
点击 Network (网络) 标签页,并执行触发 HTTP 请求的操作。
- 3
复制为 cURL
右键点击请求 → Copy (复制) → Copy as cURL (复制为 cURL)。然后将其粘贴到上方。
常见问题解答
什么是 NSURLSession?
NSURLSession 是 Apple 的 Foundation 框架 API,用于 Objective-C(和 Swift)中的 HTTP 网络。它处理数据任务、下载、上传和后台传输。适用于 iOS 7+、macOS 10.9+。无需第三方依赖——它是 Apple 平台中发起 HTTP 请求的标准方式。curl2code 为 Objective-C 生成 NSURLSession 代码。
NSURLSession 对比 AFNetworking —— 该用哪一个?
NSURLSession 是内置解决方案——足以满足大多数需求且零依赖。AFNetworking 历史上很流行,但现在处于维护模式;其继任者是 Alamofire (Swift)。对于新的 Objective-C 项目,推荐使用 NSURLSession。对于 Swift,请参阅我们的 curl 转 Swift 转换器。
如何在 Objective-C 中处理身份验证?
在 NSMutableURLRequest 上设置请求头:[request setValue:@"Bearer token" forHTTPHeaderField:@"Authorization"]。对于 Basic 认证,使用 NSData 和 base64EncodedStringWithOptions: 对凭据进行编码。curl2code 将 -u 和 Bearer 标志转换为正确的 Objective-C 语法。
如何在 Objective-C 中发送多部分表单数据?
使用 NSMutableData 构建多部分主体:附加边界字符串、字段数据和带有正确 CRLF 分隔符的文件数据。设置带有边界的 Content-Type。虽然是手动的,但提供了完全的控制。AFNetworking 通过 AFHTTPRequestSerializer 简化了这一过程。
如何在 Objective-C 中处理 HTTP 错误?
NSURLSession 完成处理程序提供一个 NSError 参数——检查它是否存在网络/传输错误。将响应转换为 NSHTTPURLResponse 并检查 statusCode。使用 NSURLSession 委托方法进行更细粒度的错误处理,包括身份验证挑战和重定向。
如何在 NSURLSession 中使用块 (block) 回调?
NSURLSession 使用基于块的回调:[session dataTaskWithRequest:request completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) { ... }]。始终调用 [task resume] 来启动。对于顺序请求,嵌套块或使用带有 dispatch_group_notify 的调度组。
如何在 Objective-C 中设置超时?
在 NSURLSessionConfiguration 上设置:config.timeoutIntervalForRequest = 30 和 config.timeoutIntervalForResource = 300。或者针对每个请求:request.timeoutInterval = 30。超时错误会作为 NSURLErrorTimedOut 出现在错误参数中。这些对应于 curl 的 --max-time 选项。
如何在 NSURLSession 中使用代理?
在 connectionProxyDictionary 上设置 NSURLSessionConfiguration,使用如 (NSString *)kCFNetworkProxiesHTTPProxy 和端口等键。默认情况下,NSURLSession 在 macOS 和 iOS 上遵循系统级代理设置。对于 PAC 文件,请通过系统偏好设置进行配置。
如何在 Objective-C 中发送带有 JSON 正文的 POST 请求?
使用 curl2code 将类似于 curl -X POST -H "Content-Type: application/json" -d "{"key":"value"}" URL 的 curl POST 命令转换为 Objective-C。生成的代码使用 [request setHTTPBody:[NSJSONSerialization dataWithJSONObject:dict options:0 error:nil]]。curl2code 会自动检测带有 JSON 内容的 -d/--data 标志,并在 NSURLSession 代码中设置相应的 Content-Type 请求头。
如何在 Objective-C 中添加 Bearer 令牌授权?
将 curl -H "Authorization: Bearer YOUR_TOKEN" URL 传递给 curl2code,它会生成带有认证请求头的 NSURLSession 代码:[request setValue:@"Bearer TOKEN" forHTTPHeaderField:@"Authorization"]。curl2code 会从 -H "Authorization: Bearer ..." 和 --oauth2-bearer 标志中检测 Bearer 令牌。对于 Basic auth,请使用 -u user:pass。
如何在 Objective-C 中设置 Content-Type 请求头?
curl2code 将 curl -H "Content-Type: application/json" URL 转换为带有正确请求头的 NSURLSession 代码:[request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"]。对于 -d 数据,curl 默认使用 application/x-www-form-urlencoded;对于 -F 表单上传,它使用 multipart/form-data。curl2code 会将每一项映射到正确的 NSURLSession API。