2016-05-27 30 views
1

我是新來的swift和iOS,並試圖爲他們使用Alamofire和路由器,它返回NSMutableURLRequest,但我的代碼沒有工作。
所以我只做了一個NSURLRequest測試,並要求它,但結果是一樣的。 這是我的代碼。我目前使用Alamofire和SwiftyJSON。通過POST方法的Alamofire NSURLRequest不起作用

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

以上代碼發送請求不帶參數。我的代碼有錯誤嗎?

+1

你試過Alamofire示例的標題發佈請求與json編碼參數的示例 –

+0

是的,它工作正常。 –

回答

0

我檢查你的代碼並執行編碼功能的request.HTTPBody是空的,但在此之前它有一個像

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

當我打電話print(response.request?.HTTPBody)Alamofire response塊的一些數據之後,我得到的參數作爲NSData和HTTPBody包含與發送請求之前相同的數據,因此它可以工作。

嘗試也responseJSON改變響應responseString,因爲如果你的反應不能被解析成JSON你失敗。

我想你應該檢查你的URL站點,如果你得到正確的數據。

而不是你的解決方案我用

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

是相同的,但更短,一切都作爲參數。