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"]!)")
}
}
}
然后事情完美解決
