将 curl 转换为 Objective-C

使用 NSURLSession 将 curl 命令转换为 Objective-C 代码。curl2code 通过 WebAssembly 完全在您的浏览器中运行——您的数据保持私密。对于 Swift,请尝试我们的 curl 转 Swift 转换器。对于 C,请参阅 curl 转 C。下方是即插即用的 Objective-C 示例。

如何从浏览器复制 curl

  1. 1

    打开开发者工具

    F12Ctrl+Shift+I 打开浏览器开发者工具。

  2. 2

    进入 Network 标签页

    点击 Network (网络) 标签页,并执行触发 HTTP 请求的操作。

  3. 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 认证,使用 NSDatabase64EncodedStringWithOptions: 对凭据进行编码。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 = 30config.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。

有用链接

curl 指南

将 curl 转换为其他语言