【问题标题】:Calling sync POST with parameters in Xcode [closed]在 Xcode 中使用参数调用同步 POST [关闭]
【发布时间】:2014-12-23 16:05:13
【问题描述】:

我发现了许多使用 NSURLdispatch_sync 发送 POST 请求的代码示例,但没有一个像 AFHTTPRequestOperationManager 这样发送参数的代码示例。有人会提供参考或代码 sn-p 吗?

我需要发送文本、数字和图像。

【问题讨论】:

  • 这可以在 Too Broad 的官方关闭原因下被搁置:请编辑问题以将其限制为具有足够详细信息的特定问题,以确定适当的答案。

标签: objective-c nsurl afhttprequestoperation


【解决方案1】:

如果执行网络请求,您应该始终异步执行它们。如果您想在等待来自服务器的响应时阻止 UI,请不要使请求同步,而是保持它异步,而是显示指示用户必须等待响应的 UI(例如 UIActivityIndicatorView 或之类的;您也可以考虑使用MBProgressHUD)。但不要执行同步请求。这是一个可怕的用户体验,看门狗进程可能会杀死你的应用程序。

如果您绝对必须同步执行请求,而不是创建自己的发布请求,您可以继续使用 AFNetworking,但使用信号量使异步请求以同步方式运行。创建一个调度信号量(dispatch_semaphore_create),在 AFNetworking 完成块内发出信号量(dispatch_semaphore_signal),等待异步方法之后的信号量(dispatch_semaphore_wait)。

AFNetworking 的诀窍是您只需确保 AFHTTPRequestOperationManagerAFHTTPSessionManagercompletionQueue 不是主队列(即,将其设置为全局队列或您指定的队列)创造自己)。如果您不更改completionQueue,如果在主队列上使用信号量,您将死锁。

但是,再一次,我不能这么说:从主线程执行同步请求的整个概念是错误的。这是一个可怕的想法。不要这样做。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-07
    • 2018-10-01
    • 1970-01-01
    • 2020-12-26
    相关资源
    最近更新 更多