NSURL
我发现了许多使用&发送 POST 请求的代码示例,dispatch_sync
但没有一个像这样发送参数AFHTTPRequestOperationManager
。有人会提供参考或代码片段吗?
我需要发送文本、数字和图像。
NSURL
我发现了许多使用&发送 POST 请求的代码示例,dispatch_sync
但没有一个像这样发送参数AFHTTPRequestOperationManager
。有人会提供参考或代码片段吗?
我需要发送文本、数字和图像。
如果执行网络请求,您应该始终异步执行它们。如果您想在等待服务器响应时阻止 UI,请不要使请求同步,而是保持异步,而是显示指示用户必须等待响应的 UI(例如 aUIActivityIndicatorView
等;您也可以考虑使用MBProgressHUD)。但不要执行同步请求。这是一个可怕的用户体验,看门狗进程可能会杀死你的应用程序。
如果您绝对必须同步执行您的请求,而不是创建自己的 post 请求,您可以继续使用 AFNetworking,但使用信号量使异步请求以同步方式运行。创建一个调度信号量(dispatch_semaphore_create
),在 AFNetworking 完成块(dispatch_semaphore_signal
)内发出信号量,等待异步方法(dispatch_semaphore_wait
)之后的信号。
completionQueue
AFNetworking的诀窍是您只需确保AFHTTPRequestOperationManager
orAFHTTPSessionManager
不是主队列(即,将其设置为全局队列或您自己创建的队列)。如果您不更改completionQueue
,如果在主队列上使用信号量,您将死锁。
但是,再一次,我不能这样说:从主线程执行同步请求的整个概念是错误的。这是一个可怕的想法。不要这样做。