Comment utiliser Alamofire 4 SessionManager?
J'ai été en utilisant Alamofire 3.4 Swift 2.3 et j'ai besoin de mettre à jour mon code Swift 3 et Alamofire 4.
J'ai été en utilisant Alamofire du Gestionnaire de faire un POST dans une url. J'ai lu la documentation sur SessionManager et je comprends que la requête utilise la méthode .OBTENIR.
J'ai été à l'aide du Gestionnaire .Réponse() pour obtenir le rappel de la demande, maintenant ça a changé dans SessionManager.
Comment puis-je faire un POST à l'aide de la méthode SessionManager? Et comment puis-je obtenir la réponse de la demande?
C'est mon code d'origine:
import UIKit
import AEXML
import Alamofire
class Request: NSObject {
internal typealias RequestCompletion = (statusCode: Int?, error:NSError?) -> ()
private var completionBlock: RequestCompletion!
var serverTrustPolicy: ServerTrustPolicy!
var serverTrustPolicies: [String: ServerTrustPolicy]!
var afManager: Manager!
func buildBdRequest(ip : String, serviceStr : String, completionBlock:RequestCompletion){
let url = getURL(ip, service: serviceStr)
configureAlamoFireSSLPinningWithCertificateData()
makeAlamofireRequest(url)
self.completionBlock = completionBlock
}
func makeAlamofireRequest(url : String){
self.afManager.request(.POST, url)
.validate(statusCode: 200..<300)
.response { request, response, data, error in
print("data - > \n \(data.debugDescription) \n")
print("response - >\n \(response.debugDescription) \n")
print("error - > \n \(error.debugDescription) \n")
var statusCode = 0
if response != nil {
statusCode = (response?.statusCode)!
}
self.completionBlock(statusCode: statusCode, error: error)
}
}
private func getURL(ip : String, service: String) -> String{
return ip + service;
}
func configureAlamoFireSSLPinningWithCertificateData() {
self.serverTrustPolicies = [ :
// "github.com": self.serverTrustPolicy!
]
self.afManager = Manager(
configuration: NSURLSessionConfiguration.defaultSessionConfiguration()
)
}
}
source d'informationauteur yasin
Vous devez vous connecter pour publier un commentaire.
J'ai migré votre code Swift 3 et Alamofire 4 et voici un résultat :
Quelques notes au sujet de code:
Dans Alamofire 4.0, vous n'avez pas besoin de valider manuellement entre les codes de 200 à 300.
validate()
méthode de le faire automatiquement.La Documentation :
Vous pouvez utiliser
response
paramètre dansresponseJSON
méthode. Il contient toutes les informations dont vous avez besoin dans votre code.Sur
request
méthodeopen func request(_ url: URLConvertible, method: HTTPMethod = .get, parameters: Parameters? = nil, encoding: ParameterEncoding = URLEncoding.default, headers: HTTPHeaders? = nil) -> DataRequest
Tous les paramètres, à l'exception de l'URL, sont initialement nul ou a une valeur par défaut. Donc c'est pas un problème pour ajouter des paramètres ou des en-têtes de votre demande.
Espère que cela vous aide
classe FV_APIManager: NSObject
{
Espère que ce sera utile pour vous.