2014-12-23 76 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,則在主隊列上使用信號量時會死鎖。

但是,我再次強調不了這一點:從主線程完成同步請求的整個概念是錯誤的。這是一個可怕的想法。不要這樣做。