使用Xcode中的参数调用同步POST

时间:2014-12-23 16:05:13

标签: objective-c nsurl afhttprequestoperation

我发现许多代码示例都是使用NSURL&发送POST请求。 dispatch_sync,但没有发送AFHTTPRequestOperationManager之类的参数。有人会提供参考或代码片段吗?

我需要发送文字,数字和图片。

1 个答案:

答案 0 :(得分:1)

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

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

AFNetworking的诀窍在于,您只需要确保dispatch_semaphore_waitcompletionQueue的{​​{1}}不是主要队列(即设置为您自己创建的全局队列或队列)。如果您不更改AFHTTPRequestOperationManager,如果在主队列中使用信号量,则会导致死锁。

但是,再一次,我不能说得足够强烈:从主线程做同步请求的整个概念都是错误的。这是一个可怕的想法。不要这样做。