swift的簡單網絡請求,學藝不精,如果錯了請指出
platform:ios,’8.0’ target 'DemoSwift' do pod 'Alamofire' # pod 'swiftJson' end
以下是我封裝的一個方法,官方的地址直接copy過來的https://github.com/SwiftyJSON/SwiftyJSON,沒有問題,因為沒有寫參數,所以沒有任何問題
func getRequestData(url:String,parame:[String:String]){ Alamofire.request(url).responseJSON { response in print(response); }; }
一下是一個有參數的get請求數據,官方的代碼直接拉過來的,
func getRequestData(url:String,parame:[String:String]){ Alamofire.request(url, method: .get, parameters: parame, encoding: JSONEncoding.default, headers: nil).responseJSON { (response) in if response.result.isSuccess{ print("成功了") if let value = response.result.value as? [String: AnyObject]{ print("返回的結果:\(value) : \(value["msg"]!)") } } }
后台一直得不到數據,還會報錯FAILURE: responseSerializationFailed(Alamofire.AFError.ResponseSerializationFailureReason.jsonSerializationFailed(Error Domain=NSCocoaErrorDomain Code=3840 "Invalid value around character 0.” UserInfo={NSDebugDescription=Invalid value around character 0.})),查資料發現如果后請求的接收方式是以post時,后台接收方式是以 from 表單時 encoding 一定要為URLEncoding.queryString。不然后台接收不到數據
改成
Alamofire.request(url, method: .get, parameters: parame, encoding: URLEncoding.queryString, headers: nil).responseJSON { (response) in if response.result.isSuccess{ print("成功了") if let value = response.result.value as? [String: AnyObject]{ print("返回的結果:\(value) : \(value["msg"]!)") } } }
然后事情完美解決