Alamofire 这个第三方不解释了,就是好。我上来就想贴我的代码~~ 上车
普通的get 或post 上传需要put 或其它的可以继续往枚举里添加:
如果需求可能变更最好再封装一层,修改起来就比较灵活了,再给个默认值,爽~
func requstData(_ type: MethodType,
urlString : String,
params : [String : AnyObject],
sucess: @escaping(_ response : AnyObject)->(),
fail : @escaping(_ error :Error)->() ) {
let requestType = type == .POST ? HTTPMethod.post : HTTPMethod.get
print("param----->%@",params)
Alamofire.request(
urlString,
method: requestType,
parameters: params).responseJSON {
(response) in
switch response.result {
case .success( _ ):
if let jsonValue = response.result.value as? [String: AnyObject] {
print("value--->\(jsonValue),url--->\(urlString)")
sucess(jsonValue as AnyObject)
}
case .failure(let error):
fail(error)
PublicTool.showAlert(error.localizedDescription)
print("normalRequesterror--->\(error)")
print("response\(String.init(data: response.data!, encoding: String.Encoding.utf8))")
}
}
}
//视频或图片上传,根据需求可以把fileName,进度条提上来封装,图片和视频可以考虑压缩
internal func uploadVideo(urlString :String,
params:[String:AnyObject]?,
data : Data?,
img: UIImage,
success :@escaping (_ response : [String : AnyObject])->(),
failture : @escaping (_ error : Error)->()) {
assert(data != nil, "the vido needed to be upload can not be nil")
let headers = ["content-type":"multipart/form-data"]
Alamofire.upload(
multipartFormData: {
(mutipartFormData) in
let imageData = UIImageJPEGRepresentation(img, 1.0)
mutipartFormData.append(imageData!,
withName: "img",
fileName: "img.png",
mimeType: "image/jpg/png/jpeg")
mutipartFormData.append(data!,
withName: "video",
fileName: "video.mp4",
mimeType: "video/mp4")
for (key, value) in params! {
mutipartFormData.append(value.data(using: String.Encoding.utf8.rawValue)!, withName: key)
}
}, to: urlString,
method:.post,
headers:headers) {
(encodingReult) in
switch encodingReult {
case .success(let upload, _, _):
upload.responseJSON { response in
if let value = response.result.value as? [String: AnyObject]{
success(value)
print("value---->\(value)")
}
guard let data = response.data else{
return
}
let utf8Text = String(data: data , encoding: .utf8)
print("return data" + utf8Text!)
}
// upload.uploadProgress { progress in
// progressClosure(progress.fractionCompleted)
// print("Upload Progress: \(progress.fractionCompleted)")
// }
case .failure(let encodingError):
failture(encodingError)
}
}
}