2016-05-27 1 views
1

Je suis nouveau à swift et iOS et en essayant d'utiliser Alamofire et routeur pour eux, ce qui renvoie NSMutableURLRequest, mais mon code n'a pas fonctionné.
Donc, je viens de faire une demande NSURLRequest pour le test, et l'a demandé mais les résultats étaient les mêmes. Voici mon code. J'utilise actuellement Alamofire et SwiftyJSON.Alamofire NSURLRequest via la méthode POST ne fonctionne pas

let params = ["Id": "1234567", "Token": "something"] 
    let url = NSURL(string: "myurl") 
    var request = NSMutableURLRequest(URL: url!) 
    request.HTTPMethod = Alamofire.Method.POST.rawValue 
    let encoding = Alamofire.ParameterEncoding.JSON 
    (request, _) = encoding.encode(request, parameters: params) 

Alamofire.request(request) 
     .validate() 
     .responseJSON { response in 
      switch response.result { 
      case .Success: 
       if let value = response.result.value { 
        let json = JSON(value) 
        let token = json["token"].stringValue 
        let error = json["error"].stringValue 
        print("token : \(token), error : \(error)") 
       } 
      case .Failure(let error): 
       // TODO: 
       print(error) 
      } 
    } 

code ci-dessus envoie la demande sans paramètres. Y a-t-il des erreurs sur mon code?

+1

Avez-vous essayé l'exemple sur Alamofire exemple avec la demande de titre de poste avec les paramètres codés json –

+0

Oui, cela a fonctionné correctement. –

Répondre

0

J'ai vérifié votre code et avant d'exécuter la fonction encode votre request.HTTPBody est vide, mais après il a des données comme

Optional<NSData> - Some:<7b22546f 6b656e22 3a22736f 6d657468 696e6722 2c224964 223a2231 32333435 3637227d>

Quand j'appelle print(response.request?.HTTPBody) dans le bloc Alamofire response, je reçois les paramètres car NSData et HTTPBody incluent les mêmes données qu'avant d'envoyer la requête pour que cela fonctionne.

Essayez de changer aussi la réponse de responseJSON à responseString, car si votre réponse ne peut être analysée à JSON vous obtenez non.

Je pense que vous devriez vérifier sur votre site URL si vous obtenez des données correctes.

Au lieu de votre solution que j'utiliser

Alamofire.request(method, url, parameters: parameters, encoding: .JSON) .responseString{ response in}

est le même, mais plus court et tout est en tant que paramètres.