123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171 |
-
-
-
-
-
-
-
- import Foundation
- import Moya
- import Alamofire
- import HandyJSON
- import RxSwift
- import SwiftyJSON
-
-
- private var requestTimeOut:Double = 30
-
- public let myEndpointClosure = { (target: TargetType) -> Endpoint in
-
-
- let url = target.baseURL.absoluteString + target.path
- var endpoint = Endpoint(
- url: url,
- sampleResponseClosure: { .networkResponse(200, target.sampleData) },
- method: target.method,
- task: target.task,
- httpHeaderFields: target.headers
- )
- switch target {
- default:
- requestTimeOut = 30
- return endpoint
- }
- }
-
- public let requestClosure = { (endpoint: Endpoint, done: MoyaProvider.RequestResultClosure) in
- do {
- var request = try endpoint.urlRequest()
-
- request.timeoutInterval = requestTimeOut
-
- if let requestData = request.httpBody {
- log.info("\(request.url!)"+"\n"+"\(request.httpMethod ?? "")"+"发送参数"+"\(String(data: request.httpBody!, encoding: String.Encoding.utf8) ?? "")")
- }else{
- log.info("\(request.url!)"+"\(String(describing: request.httpMethod))")
- }
- if let header = request.allHTTPHeaderFields {
- log.info("请求头内容\(header)")
- }
- done(.success(request))
- } catch {
- done(.failure(MoyaError.underlying(error, nil)))
- }
- }
-
-
-
- public let networkPlugin = NetworkActivityPlugin.init { (changeType, targetType) in
-
- log.info("networkPlugin \(changeType)")
-
- switch(changeType){
- case .began:
- log.info("开始请求网络")
-
- case .ended:
- log.info("结束")
- }
- }
-
-
-
-
-
- final class TdwMoyaPlugin: PluginType {
-
- public func prepare(_ request: URLRequest, target: TargetType) -> URLRequest {
- var request = request
- request.addValue("token值", forHTTPHeaderField: "token名字")
- return request
- }
- }
-
-
-
- let accountProvider = MoyaProvider<AccountService>(endpointClosure: myEndpointClosure, requestClosure: requestClosure, plugins: [networkPlugin], trackInflights: false)
-
- public class NetworkManaer{
-
-
-
-
-
-
-
-
-
- public class func request<T: TargetType,U: HandyJSON>(_ target: T, success: @escaping((U) -> Void), failure: ((Int?, String) ->Void)?) {
- let provider = MoyaProvider<T>(
- endpointClosure: myEndpointClosure,
- requestClosure: requestClosure,
- plugins: [networkPlugin],
- trackInflights: false
-
- )
-
- provider.request(target) { result in
- switch result {
- case let .success(response):
-
-
-
- do {
-
- let resObject = try? response.mapJSON()
- let responseObject = JSON(resObject ?? "")
- let code = responseObject["code"].intValue
- let msg = String(describing: responseObject["msg"])
- switch (code) {
- case 0 :
- let dictionary=responseObject["obj"].dictionaryObject
- let responseData=U.deserialize(from: dictionary)
- log.info(responseData?.toJSONString())
-
- success(responseData!)
- case 2:
-
- failure!(code,msg)
- alertLogin(msg)
- default:
-
- failureHandle(failure: failure, stateCode: code, message: msg)
- }
- }
- case let .failure(error):
- let statusCode = error.response?.statusCode ?? 1000
- let message = "请求出错,错误码:" + String(statusCode)
- log.error(message)
- failureHandle(failure: failure, stateCode: statusCode, message: error.errorDescription ?? message)
- }
- }
-
-
- func failureHandle(failure: ((Int?, String) ->Void)? , stateCode: Int?, message: String) {
-
-
- failure?(stateCode ,message)
- }
-
-
- func alertLogin(_ title: String?) {
-
- }
-
- }
-
-
-
-
-
-
-
-
-
-
-
-
-
- }
-
|