2016-05-27 11 views
1

Ich bin neu zu swift und iOS und versuchen, Alamofire und Router für sie zu verwenden, die NSMutableURLRequest zurückgibt, aber mein Code hat nicht funktioniert.
Also habe ich nur einen NSURLRequest für den Test gemacht und angefordert, aber das Ergebnis war das gleiche. Hier ist mein Code. Ich verwende derzeit Alamofire und SwiftyJSON.Alamofire NSURLRequest über POST-Methode funktioniert nicht

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) 
      } 
    } 

Above Code sendet Anfrage ohne Parameter. Gibt es Fehler in meinem Code?

+1

Haben Sie Probe auf Alamofire Beispiel mit Titel Beitrag Anfrage mit Json codierten Parameter –

+0

Ja, es hat richtig funktioniert. –

Antwort

0

Ich habe Ihren Code überprüft und vor kodieren Funktion Ihre request.HTTPBody Ausführung ist leer, aber nachdem es einige Daten wie

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

hat Wenn ich print(response.request?.HTTPBody) in Alamofire response Block aufrufen, erhalte ich die Parameter Da NSData und HTTPBody die gleichen Daten enthalten wie vor dem Senden der Anfrage, damit sie funktioniert.

Versuchen Sie ändern auch die Antwort von responseJSON zu responseString, denn wenn Ihre Antwort nicht analysiert werden können Sie Failure erhalten JSON.

Ich denke, Sie sollten auf Ihrer URL-Website überprüfen, wenn Sie die richtigen Daten erhalten.

Statt Ihrer Lösung verwende ich

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

das gleiche ist, aber kürzer und alles ist als Parameter.