2014-12-23 73 views
0

我发现了许多代码示例,用于使用NSURL & dispatch_sync发送POST请求,但没有发送像AFHTTPRequestOperationManager这样的参数。 有人可以帮助参考或代码片段?xcode:调用具有参数的同步POST

我需要发送文字,号码&图像。

回答

1

如果要进行网络请求,您应该始终以异步方式执行它们。如果要在等待服务器响应时阻止用户界面,请不要使请求同步,而是使其保持异步,但要呈现指示用户必须等待响应的UI(例如,UIActivityIndicatorView等) ;你也可以考虑使用MBProgressHUD)。但不要执行同步请求。这是一个可怕的用户体验,看门狗程序可能会让你的应用程序失效。

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

与AFNetworking的技巧将是你只需要确保AFHTTPRequestOperationManagerAFHTTPSessionManagercompletionQueue不是主队列(即设置它是一个全球性的队列或您自己创建一个队列)。如果您不更改completionQueue,则在主队列上使用信号量时会死锁。

但是,我再次强调不了这一点:从主线程完成同步请求的整个概念是错误的。这是一个可怕的想法。不要这样做。