私はAlamofireでhttp投稿要求を送信したいと思います。 sampleViewControllerにリクエストを送信し、リクエストからレスポンスを取得するコードがあります。私はサーバーからの応答を持っている問題がありますが、私はサンプルビューコントローラで応答を印刷したいとき、私の応答は常にnilを返します。サーバーから応答を受け取った後、どのように応答を確認できますか?Alamofire HTTPリクエスト
public class PersistencyManager {
func SendPostHttpRequest(baseURL: String, parameter: [String:Any?], content: String) -> Any? {
let url = URL(string: Constant.baseURL)
var result : Any?
var urlRequest = URLRequest(url: url!)
urlRequest.setValue("text/html; charset=utf-8", forHTTPHeaderField: "Content-Type")
urlRequest.setURLEncodedFormData(parameters: parameter)
Alamofire.request(urlRequest).responseJSON { response in
switch response.result {
case .success :
if let JSON = response.result.value as? [String:Any] {
print("JSON: \(JSON)")
result = JSON
}
case .failure :
result = nil
}
}
default:
break
}
return result
}
}
class sampleViewController: UIViewController {
@IBOutlet weak var sendButton: UIButton!
@IBOutlet weak var centerVIew: UIView!
override func viewDidLoad() {
super.viewDidLoad()
}
@IBAction func SendRequest(_ sender: Any) {
let parameters = ["key":Constant.serverKey,"userid":"0" ,"action":"vitrin","step":"list","sort": nil,"filter":nil,"start":String("5"),"end":String("8")]
Constant.libraryAPI.parameters = parameters
Constant.libraryAPI.requestContent = "String"
let response = Constant.libraryAPI.GetAPIResponse(parameters: parameters, contentType: "String")
print(response) //this line call before get response from server
}
}
Alamofireは非同期を要求するのに役立ちます。これはあなたの 'SendPostHttpRequest'がすぐに戻ることを意味します。 –
@OrkhanAlikhanov他のコントローラの応答をどのように処理できますか? – ava
応答が届いたときに呼び出されるはずの 'SendPostHttpRequest'にクロージャを渡す必要があります。 –