From ac84f81ca2311300b431c1bfb9f71253b59073f2 Mon Sep 17 00:00:00 2001 From: 杨锴 <841720330@qq.com> Date: 星期三, 04 六月 2025 00:16:22 +0800 Subject: [PATCH] 修改部分 --- DolphinEnglishLearnStudent/Services/NetworkRequest.swift | 384 +++++++++++++++++++++++++++--------------------------- 1 files changed, 192 insertions(+), 192 deletions(-) diff --git a/DolphinEnglishLearnStudent/Services/NetworkRequest.swift b/DolphinEnglishLearnStudent/Services/NetworkRequest.swift index a9903f4..bd4567d 100644 --- a/DolphinEnglishLearnStudent/Services/NetworkRequest.swift +++ b/DolphinEnglishLearnStudent/Services/NetworkRequest.swift @@ -16,24 +16,24 @@ // 假设这是服务端返回的统一定义的response格式 struct BaseResponse<T :HandyJSON>: HandyJSON { - var sysTime: Int = 0 - var code: Int = -1 // 服务端返回码 - var data: T? = nil // 具体的data的格式和业务相关,故用泛型定义 - var msg: String = "" + var sysTime: Int = 0 + var code: Int = -1 // 服务端返回码 + var data: T? = nil // 具体的data的格式和业务相关,故用泛型定义 + var msg: String = "" } struct BaseData<T: HandyJSON>: HandyJSON { - var records = [T]() + var records = [T]() } struct SimpleModel: HandyJSON { } struct HtmlModel: HandyJSON { - var content = "" - var content1 = "" - var id = 0 - var type = 0 + var content = "" + var content1 = "" + var id = 0 + var type = 0 } extension String: HandyJSON{ @@ -53,227 +53,227 @@ let SHAKEY = "" class ParamsAppender: NSObject { - var url: URL - var params:Dictionary = [String: Any]() + var url: URL + var params:Dictionary = [String: Any]() - private init(url: String){ - self.url = URL(string: url)! - } + private init(url: String){ + self.url = URL(string: url)! + } - @discardableResult - func interface(url: String) -> ParamsAppender { - self.url.appendPathComponent(url) - return self - } + @discardableResult + func interface(url: String) -> ParamsAppender { + self.url.appendPathComponent(url) + return self + } - @discardableResult - func append(key: String,value: Bool) -> ParamsAppender { - params += ["\(key)":"\(value)"] - return self - } + @discardableResult + func append(key: String,value: Bool) -> ParamsAppender { + params += ["\(key)":"\(value)"] + return self + } - @discardableResult - func append(key: String,value: String?) -> ParamsAppender { - if value != nil && value?.isEmpty == false { - params += ["\(key)":"\(value!)"] - } - return self - } + @discardableResult + func append(key: String,value: String?) -> ParamsAppender { + if value != nil && value?.isEmpty == false { + params += ["\(key)":"\(value!)"] + } + return self + } - @discardableResult - func append(key: String,value: Array<String>) -> ParamsAppender { - if value.isEmpty == false { - params += ["\(key)":value] - } - return self - } + @discardableResult + func append(key: String,value: Array<String>) -> ParamsAppender { + if value.isEmpty == false { + params += ["\(key)":value] + } + return self + } - @discardableResult - func append(key: String, value: Int?) -> ParamsAppender { - if value != nil{ - params += ["\(key)":value!] - } - return self - } + @discardableResult + func append(key: String, value: Int?) -> ParamsAppender { + if value != nil{ + params += ["\(key)":value!] + } + return self + } - @discardableResult - func append(key: String, value: Int64) -> ParamsAppender { - params += ["\(key)":value] - return self - } + @discardableResult + func append(key: String, value: Int64) -> ParamsAppender { + params += ["\(key)":value] + return self + } - @discardableResult - func append(key: String, value: Double?) -> ParamsAppender { - if value != nil{ - params += ["\(key)":value!] - } - return self - } + @discardableResult + func append(key: String, value: Double?) -> ParamsAppender { + if value != nil{ + params += ["\(key)":value!] + } + return self + } - @discardableResult - func append(key: String,data: Data?) -> ParamsAppender { - if data != nil{ - params += ["\(key)": data!] - } - return self - } + @discardableResult + func append(key: String,data: Data?) -> ParamsAppender { + if data != nil{ + params += ["\(key)": data!] + } + return self + } - @discardableResult - func append(key: String,url: URL) -> ParamsAppender { - params += ["\(key)":"\(url)"] - return self - } + @discardableResult + func append(key: String,url: URL) -> ParamsAppender { + params += ["\(key)":"\(url)"] + return self + } - @discardableResult - func append(dic: [String : Any]) -> ParamsAppender { - params += dic - return self - } + @discardableResult + func append(dic: [String : Any]) -> ParamsAppender { + params += dic + return self + } - /// 参数加密 - @discardableResult - func done() -> Parameters { - var paramsArray: [String] = [] - // 排序 - let sortedArray: [String] = Array(params.keys).sorted() + /// 参数加密 + @discardableResult + func done() -> Parameters { + var paramsArray: [String] = [] + // 排序 + let sortedArray: [String] = Array(params.keys).sorted() - //防止自签名而错误 - if !sortedArray.contains("sign"){ - for item in sortedArray{ - // 拼接字符串 - if params.has(key: item){ - paramsArray.append("\(item)=\(params[item]!)") - } - } - let content = paramsArray.joined(separator: "&") - params += ["sign": "\(content.jq_hmacBase64(algorithm: .SHA1, key: SHAKEY))"] + //防止自签名而错误 + if !sortedArray.contains("sign"){ + for item in sortedArray{ + // 拼接字符串 + if params.has(key: item){ + paramsArray.append("\(item)=\(params[item]!)") + } + } + let content = paramsArray.joined(separator: "&") + params += ["sign": "\(content.jq_hmacBase64(algorithm: .SHA1, key: SHAKEY))"] #if DEBUG - LogInfo("签名:\(content) ----- \(content.jq_hmacBase64(algorithm: .SHA1, key: SHAKEY))") + LogInfo("签名:\(content) ----- \(content.jq_hmacBase64(algorithm: .SHA1, key: SHAKEY))") #endif - } - return self.params - } + } + return self.params + } - class func build(url: String) -> ParamsAppender { - return ParamsAppender(url: url) - } + class func build(url: String) -> ParamsAppender { + return ParamsAppender(url: url) + } } class NetworkRequest { - static let sharedSessionManager: Alamofire.Session = { - let configuration = URLSessionConfiguration.default - configuration.timeoutIntervalForRequest = 10 - return Alamofire.Session(configuration: configuration) - }() - enum NetRequestError: Error { - case Other(Int,String) - case URLNotFound - case DownloadFailed - case InvaildSession - case ModelError(String) - case DataAnalysis(String) - } + static let sharedSessionManager: Alamofire.Session = { + let configuration = URLSessionConfiguration.default + configuration.timeoutIntervalForRequest = 10 + return Alamofire.Session(configuration: configuration) + }() + enum NetRequestError: Error { + case Other(Int,String) + case URLNotFound + case DownloadFailed + case InvaildSession + case ModelError(String) + case DataAnalysis(String) + } - class func request<T: HandyJSON>(params: ParamsAppender, method: HTTPMethod, encoding: ParameterEncoding? = nil, progress: Bool = true,ignoreAlert:Bool = false) -> Observable<BaseResponse<T>>{ + class func request<T: HandyJSON>(params: ParamsAppender, method: HTTPMethod, encoding: ParameterEncoding? = nil, progress: Bool = true,ignoreAlert:Bool = false) -> Observable<BaseResponse<T>>{ - return Observable<BaseResponse<T>>.create{ ob in - guard NetworkReachabilityManager.init(host: All_Url)!.isReachable else { - alertError(msg: "当前网络不可用") - ob.onError(AFError.invalidURL(url: params.url)) - return Disposables.create{} - } + return Observable<BaseResponse<T>>.create{ ob in + guard NetworkReachabilityManager.init(host: All_Url)!.isReachable else { + alertError(msg: "当前网络不可用") + ob.onError(AFError.invalidURL(url: params.url)) + return Disposables.create{} + } - if progress {showHUD()} + if progress {showHUD()} - var headers = HTTPHeaders() + var headers = HTTPHeaders() - if let token = LoginTokenModel.getToken()?.access_token{ - headers.add(name: "Authorization", value: "Bearer" + " " + token) - LogInfo("USER_token:Bearer \(token)") - } + if let token = LoginTokenModel.getToken()?.access_token{ + headers.add(name: "Authorization", value: "Bearer" + " " + token) + LogInfo("USER_token:Bearer \(token)") + } - if encoding is JSONEncoding { - headers.add(name: "Content-Type", value: "application/json;charset=UTF-8") - } + if encoding is JSONEncoding { + headers.add(name: "Content-Type", value: "application/json;charset=UTF-8") + } - var newEncoding: ParameterEncoding - if encoding != nil { - newEncoding = encoding! - } else { - newEncoding = method == .post ? URLEncoding.httpBody : URLEncoding.queryString - } + var newEncoding: ParameterEncoding + if encoding != nil { + newEncoding = encoding! + } else { + newEncoding = method == .post ? URLEncoding.httpBody : URLEncoding.queryString + } - sharedSessionManager.request(params.url.absoluteString, method: method, parameters:params.done(), encoding: newEncoding, headers:headers).validate().responseData{response in - LogInfo("请求地址:\(params.url)") - LogInfo("请求参数:\(params.params)") - if progress{hiddenHUD()} + sharedSessionManager.request(params.url.absoluteString, method: method, parameters:params.done(), encoding: newEncoding, headers:headers).validate().responseData{response in + LogInfo("请求地址:\(params.url)") + LogInfo("请求参数:\(params.params)") + if progress{hiddenHUD()} - guard response.error == nil else { - LogError("\(response.error!)") + guard response.error == nil else { + LogError("\(response.error!)") - var errorString = "" - errorString.append("服务器故障:\(response.error!.localizedDescription)") - if let code = response.error?.responseCode{ - errorString.append("\n【错误码:\(code)】") - } - if !ignoreAlert{ - alert(msg: errorString) - } - ob.onError(response.error!) - return - } - if let data = response.data,let jsonString = String(data: data, encoding: String.Encoding.utf8){ - LogResponse(try! JSONSerialization.jsonObject(with: data)) - if let next = BaseResponse<T>.deserialize(from: jsonString){ - switch next.code{ - case 200:ob.onNext(next) - case 506: - ob.onError(NetRequestError.Other(next.code,next.msg)) - case 502: //登录被冻结 - CommonAlertView.show(isSinple: true, content: next.msg) - case 501: - CommonAlertView.show(content: "以下内容仅限会员查看,请先成为会员!", completeTitle: "成为会员") { - let vc = VIPCenterVC() - vc.title = "会员中心" - JQ_currentNavigationController().pushViewController(vc) + var errorString = "" + errorString.append("服务器故障:\(response.error!.localizedDescription)") + if let code = response.error?.responseCode{ + errorString.append("\n【错误码:\(code)】") + } + if !ignoreAlert{ + alert(msg: errorString) + } + ob.onError(response.error!) + return + } + if let data = response.data,let jsonString = String(data: data, encoding: String.Encoding.utf8){ + LogResponse(try! JSONSerialization.jsonObject(with: data)) + if let next = BaseResponse<T>.deserialize(from: jsonString){ + switch next.code{ + case 200:ob.onNext(next) + case 506: + ob.onError(NetRequestError.Other(next.code,next.msg)) + case 502: //登录被冻结 + CommonAlertView.show(isSinple: true, content: next.msg) + case 501: + CommonAlertView.show(content: "以下内容仅限会员查看,请先成为会员!", completeTitle: "成为会员") { + let vc = VIPCenterVC() + vc.title = "会员中心" + JQ_currentNavigationController().pushViewController(vc) - } cancelClouse: { + } cancelClouse: { - } - case 401,505,600: - if !ignoreAlert{ - alertError(msg: "登录失效,请重新登录");ob.onError(NetRequestError.InvaildSession) - } - sceneDelegate?.needLogin() - default: - //503是手机验证码错误 - if !ignoreAlert{ - DispatchQueue.main.async { - alertError(msg: "\(next.msg)") - } - } - ob.onError(NetRequestError.Other(next.code,next.msg)) - } - } - } - ob.onCompleted() - } - return Disposables.create{} - } - } + } + case 401,505,600: + if !ignoreAlert{ + alertError(msg: "登录失效,请重新登录");ob.onError(NetRequestError.InvaildSession) + } + sceneDelegate?.needLogin() + default: + //503是手机验证码错误 + if !ignoreAlert{ + DispatchQueue.main.async { + alertError(msg: "\(next.msg)") + } + } + ob.onError(NetRequestError.Other(next.code,next.msg)) + } + } + } + ob.onCompleted() + } + return Disposables.create{} + } + } } extension Dictionary { - mutating func append(dict: Dictionary) { - dict.forEach { (key, value) in - self.updateValue(value, forKey: key) - } - } + mutating func append(dict: Dictionary) { + dict.forEach { (key, value) in + self.updateValue(value, forKey: key) + } + } } func createError(text:String,code:Int)->AFError{ - return AFError.createURLRequestFailed(error: NSError(domain: text, code: code)) + return AFError.createURLRequestFailed(error: NSError(domain: text, code: code)) } -- Gitblit v1.7.1