2015-11-20 55 views
1

我下面Alamofire的CRUD和授權部分:Alamofire URL編碼的請求參數沒有得到補充

enum Router: URLRequestConvertible { 

所以,我要完成的任務基本上是一個簡單的PUT請求,看起來像這樣:

http://localhost:8080/rest/users/add?id=

所以在我的代碼有:

let requestParam : [String : AnyObject] = ["id" : "\(SOMEID)"] 
    Alamofire.request(Router.AddUser(parameters: requestParam)) 
    .validate() 
    .responseString { response in 
     switch response.result { 
     case .Success: 
    .. 

但是,以下我的服務器沒有得到這個id參數。

調試NSMutableURLRequest,我發現沒有添加id參數。

case .AddUser(let parameters): 
     print(parameters) 
     let encodedURL = Alamofire.ParameterEncoding.URL.encode(mutableURLRequest, parameters: parameters).0 
     print (encodedURL) 

控制檯輸出:

[ 「身份證」:5649fec6d4c662c573d39fb4] {網址:http://localhost:8080/rest/users/add}

這是很奇怪的,因爲我有另一個方法寫入幾乎相同,但我沒有得到同樣的問題。

編輯:

它的一些試驗,這是因爲該方法是PUT後證明。如果是GET方法,則正確添加參數。有誰知道爲什麼我不能把請求參數PUT?這是故意的嗎?

回答

0

在你的路由器,你爲什麼不使用NSURLComponents建立自己的網址,然後返回NSMutableURLRequest這樣的:

enum Router: URLRequestConvertible { 
    ... 
    var URLRequest: NSMutableUrlRequest { 
    var urlComponents = NSURLComponents() 
    urlComponents.host = // something 
    urlComponents.scheme = // probably wanna use https 
    switch self { 
     case .AddUser(let parameters): 
     // set urlComponents.path here 
     urlComponents.query = parameters.queryString 
     // depending on your code you may want to check before force unwrapping URL below 
     return NSMutableUrlRequest(URL: urlComponents.URL!) 
    } 
    } 
} 

,那麼你可以擴展字典,String類型的計算性能。

希望有幫助!