// get--01---responseData
let url="\(BASEURL)"+LUNBOURL
let image:UIImage=UIImage.init(named:"bannerhomeOne")!
//获取数据
func normalGetData() {
//get--01--response
Alamofire.request(url).response { (returnResult)in
if let data = returnResult.data,let utf8Text =String(data: data, encoding: .utf8) {
print(" utf8Text =\(utf8Text)")
}
}
// get--02---responseData
Alamofire.request(url).responseData { (returnResult)in
debugPrint(" returnResult =\(returnResult)")
if let data = returnResult.data,let utf8Text =String(data: data, encoding: .utf8) {
print(" utf8Text =\(utf8Text)")
}
}
//get--03--responseString
Alamofire.request(url).responseString { (returnResult)in
debugPrint(" Sucess =\(returnResult.result.isSuccess)")
print(" returnResult =\(returnResult)")
}
//get --04--responseJSON
Alamofire.request(url).responseJSON { (returnResult)in
debugPrint("responseJSON -->\(returnResult)")
if let json = returnResult.result.value {//这个转换的json数据比较正规
print("responseJSON -->\(json)")
/* 返回请求地址、数据、和状态结果等信息
print(" responseJSON() --> \(returnResult.request!)")
print("responseJSON() --> \(returnResult.data!)")
print(" responseJSON() --> \(returnResult.result)")
*/
}
}
// get--05---queue
// 补充:1.参数:queue:请求队列 --> 就是默认在主线程中执行~我们可以自定义调度队列。
// 官方解释:Response handlers by default are executed on the main dispatch queue. However, a custom dispatch queue can be provided instead.
let customQueue = DispatchQueue.global(qos: .utility)
Alamofire.request(url).responseJSON(queue: customQueue) { (returnResult)in
print("请求队列 -->\(returnResult)")
}
//get---06带请求头设置获取数据
let headers: HTTPHeaders = [
"Accept":"application/json"//设置客户端以什么格式解析服务器返回的数据
]
Alamofire.request(url, headers: headers).responseJSON { (returnResult)in
print("获取数据并设置请求头 --> returnResult =\(returnResult)")
}
}
//GET请求---无参数
func getData() {
Alamofire.request(url, method: .get).responseJSON { (returnResult)in
print("GET 请求无参数 --> returnResult =\(returnResult)")
}
}
//POST请求----无参数
func postData(){
Alamofire.request(url, method: .post).responseJSON { (returnResult)in
print("POST 请求无参数 --> returnResult =\(returnResult)")
}
}
//POST请求有参数
func postDataWithParams() {
let param = [String:String]()
Alamofire.request(url, method: .post, parameters: param).responseJSON { (returnResult)in
print(" POST 请求有参数参数 --> returnResult =\(returnResult)")
}
}
// URLRequest的方式请求
func URLRequestWidth() {
let urls = URL(string: url)
var urlRequest = URLRequest(url: urls!)
urlRequest.httpMethod = "POST"
let param = ["type":"","key":""]
do {
urlRequest.httpBody = try JSONSerialization.data(withJSONObject: param, options: [])
} catch {
print(error)
}
urlRequest.setValue("application/json", forHTTPHeaderField:"Content-Type")
Alamofire.request(urlRequest).responseData { (returnResult)in
debugPrint(returnResult)
if let data = returnResult.data,let utf8Text = String(data: data, encoding: .utf8) {
print(" URLRequest请求方式 --> utf8Text =\(utf8Text)")
}
}
}
//下载不带进度
func download() {
// 1.下载图片
Alamofire.download(url).responseData { (returnResult)in
if let data = returnResult.result.value {
let image = UIImage(data: data)
print("image =\(image!)")
} else {
print("下载失败")
}
}
}
//下载带进度
func downoadWithProgress() {
Alamofire.download(url).downloadProgress { (progress)in
print("下载进度 =\(progress.fractionCompleted)")
}.responseData { (returnResult) in
if let data = returnResult.result.value {
let image = UIImage(data: data)
print("image =\(image!)")
} else {
print("下载失败")
}
}
}
//uploadData----上传data数据
func uploadData() {
let imageData =UIImagePNGRepresentation(image)!
Alamofire.upload(imageData, to: url).responseJSON { response in
debugPrint(response)
}
}
//uploadFile----上传文件
func uploadFile() {
let fileURL = Bundle.main.url(forResource:"video", withExtension:"mov")
Alamofire.upload(fileURL!, to: url).responseJSON { response in
debugPrint(response)
}
}
//uploadMultiFormData----上传多个表单数据
func uploadMultiFormData() {
Alamofire.upload(
multipartFormData: { multipartFormData in//添加多个表单数据是吧本地url传上去
// multipartFormData.append(unicornImageURL, withName: "unicorn")
// multipartFormData.append(rainbowImageURL, withName: "rainbow")
},
to: url,
encodingCompletion: { encodingResult in
switch encodingResult {
case .success(let upload,_,_):
upload.responseJSON { responsein
debugPrint(response)
}
case .failure(let encodingError):
print(encodingError)
}
}
)
}
//上传带进度条
func uploadWithProgress() {
let fileURL = Bundle.main.url(forResource:"video", withExtension:"mov")
Alamofire.upload(fileURL!, to: url)
.uploadProgress { progress in // main queue by default
print("Upload Progress:\(progress.fractionCompleted)")
}
.downloadProgress { progress in // main queue by default
print("Download Progress:\(progress.fractionCompleted)")
}
.responseJSON { response in
debugPrint(response)
}
}