Commit 2ea62f75 authored by David黄金龙's avatar David黄金龙

处理 网络请求问题

parent e4d48496
......@@ -19,6 +19,7 @@
6203A87EDC96313BBE789D9C /* Pods_galaxy.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 987C69D43AE8D85DC1930DCF /* Pods_galaxy.framework */; };
A51044182B493675006B60BB /* README.md in Resources */ = {isa = PBXBuildFile; fileRef = A51044172B493675006B60BB /* README.md */; };
A510441A2B495DD0006B60BB /* UIView+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = A51044192B495DD0006B60BB /* UIView+Extension.swift */; };
A5551FFE2B4C26CE00510980 /* YHBaseViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = A5551FFD2B4C26CE00510980 /* YHBaseViewModel.swift */; };
A5573ED22B317BFF00D98EC0 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = A5573ED12B317BFF00D98EC0 /* AppDelegate.swift */; };
A5573EDB2B317C0000D98EC0 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = A5573EDA2B317C0000D98EC0 /* Assets.xcassets */; };
A5573EE92B317C0100D98EC0 /* galaxyTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = A5573EE82B317C0100D98EC0 /* galaxyTests.swift */; };
......@@ -61,7 +62,6 @@
A5ACE94A2B4564F7002C94D2 /* BsHUDProgressView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A5ACE90C2B4564F7002C94D2 /* BsHUDProgressView.swift */; };
A5ACE94B2B4564F7002C94D2 /* BsHUDRotatingImageView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A5ACE90D2B4564F7002C94D2 /* BsHUDRotatingImageView.swift */; };
A5ACE94C2B4564F7002C94D2 /* BsHUDErrorView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A5ACE90E2B4564F7002C94D2 /* BsHUDErrorView.swift */; };
A5ACE94D2B4564F7002C94D2 /* YhGestureTableView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A5ACE90F2B4564F7002C94D2 /* YhGestureTableView.swift */; };
A5ACE94E2B4564F7002C94D2 /* AlignedCollectionViewFlowLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = A5ACE9102B4564F7002C94D2 /* AlignedCollectionViewFlowLayout.swift */; };
A5ACE94F2B4564F7002C94D2 /* YhOverlayView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A5ACE9112B4564F7002C94D2 /* YhOverlayView.swift */; };
A5ACE9502B4564F7002C94D2 /* YhCacheTool.swift in Sources */ = {isa = PBXBuildFile; fileRef = A5ACE9122B4564F7002C94D2 /* YhCacheTool.swift */; };
......@@ -123,6 +123,7 @@
987C69D43AE8D85DC1930DCF /* Pods_galaxy.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_galaxy.framework; sourceTree = BUILT_PRODUCTS_DIR; };
A51044172B493675006B60BB /* README.md */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = "<group>"; };
A51044192B495DD0006B60BB /* UIView+Extension.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UIView+Extension.swift"; sourceTree = "<group>"; };
A5551FFD2B4C26CE00510980 /* YHBaseViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHBaseViewModel.swift; sourceTree = "<group>"; };
A5573ECE2B317BFF00D98EC0 /* galaxy.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = galaxy.app; sourceTree = BUILT_PRODUCTS_DIR; };
A5573ED12B317BFF00D98EC0 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
A5573EDA2B317C0000D98EC0 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
......@@ -168,7 +169,6 @@
A5ACE90C2B4564F7002C94D2 /* BsHUDProgressView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BsHUDProgressView.swift; sourceTree = "<group>"; };
A5ACE90D2B4564F7002C94D2 /* BsHUDRotatingImageView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BsHUDRotatingImageView.swift; sourceTree = "<group>"; };
A5ACE90E2B4564F7002C94D2 /* BsHUDErrorView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BsHUDErrorView.swift; sourceTree = "<group>"; };
A5ACE90F2B4564F7002C94D2 /* YhGestureTableView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = YhGestureTableView.swift; sourceTree = "<group>"; };
A5ACE9102B4564F7002C94D2 /* AlignedCollectionViewFlowLayout.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AlignedCollectionViewFlowLayout.swift; sourceTree = "<group>"; };
A5ACE9112B4564F7002C94D2 /* YhOverlayView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = YhOverlayView.swift; sourceTree = "<group>"; };
A5ACE9122B4564F7002C94D2 /* YhCacheTool.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = YhCacheTool.swift; sourceTree = "<group>"; };
......@@ -440,7 +440,6 @@
isa = PBXGroup;
children = (
A5ACE9062B4564F7002C94D2 /* BsHUD */,
A5ACE90F2B4564F7002C94D2 /* YhGestureTableView.swift */,
A5ACE9102B4564F7002C94D2 /* AlignedCollectionViewFlowLayout.swift */,
A5ACE9112B4564F7002C94D2 /* YhOverlayView.swift */,
A5ACE9122B4564F7002C94D2 /* YhCacheTool.swift */,
......@@ -534,6 +533,7 @@
A5ACE9202B4564F7002C94D2 /* YHBaseViewController.swift */,
A5ACE9212B4564F7002C94D2 /* YHNavigationController.swift */,
A5ACE9222B4564F7002C94D2 /* YHTabBarViewController.swift */,
A5551FFD2B4C26CE00510980 /* YHBaseViewModel.swift */,
);
path = C;
sourceTree = "<group>";
......@@ -789,6 +789,7 @@
A5ACE9442B4564F7002C94D2 /* Array+Extension.swift in Sources */,
A5ACE9522B4564F7002C94D2 /* YHIntelligentServiceViewController.swift in Sources */,
A5ACE9462B4564F7002C94D2 /* BsHUDSquareBaseView.swift in Sources */,
A5551FFE2B4C26CE00510980 /* YHBaseViewModel.swift in Sources */,
A5ACE94B2B4564F7002C94D2 /* BsHUDRotatingImageView.swift in Sources */,
A5ACE94F2B4564F7002C94D2 /* YhOverlayView.swift in Sources */,
A5ACE92E2B4564F7002C94D2 /* YHValidateCodeInputView.swift in Sources */,
......@@ -827,7 +828,6 @@
A5ACE92D2B4564F7002C94D2 /* YHLoginPrivacyView.swift in Sources */,
A5ACE9372B4564F7002C94D2 /* YHBaseUrlManager.swift in Sources */,
A5ACE9352B4564F7002C94D2 /* YHNetRequest.swift in Sources */,
A5ACE94D2B4564F7002C94D2 /* YhGestureTableView.swift in Sources */,
A5ACE9272B4564F7002C94D2 /* YHLoginViewController.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
......
//
// YHBaseViewModel.swift
// galaxy
//
// Created by davidhuangA on 2024/1/8.
// Copyright © 2024 www.davidhuang.com. All rights reserved.
//
import UIKit
class YHBaseViewModel: NSObject {
}
......@@ -7,13 +7,10 @@
//
import Foundation
import RxSwift
import GKNavigationBarSwift
class YHHomeViewController: YHBaseViewController {
//C 对应的 VM
let disposeBag = DisposeBag()
lazy var homeReqVM : YHHomePageViewModel = {
return YHHomePageViewModel()
}()
......@@ -33,30 +30,31 @@ class YHHomeViewController: YHBaseViewController {
initView()
//2.网络请求
// bind()
// requestData()
requestData()
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
//for test hjl
// requestData()
requestData()
}
private func requestData() {
self.homeReqVM.getHomeConfig()
}
private func bind() {
homeReqVM.subject.subscribe(onNext: { model in
print("网络请求获取的数据是====>")
print(model)
}).disposed(by: DisposeBag())
self.homeReqVM.getHomeConfig { flag, error in
if flag == true {
//1. 调用model 刷新界面
YHHUD.flash(message: "数据已更新")
} else {
//2. 给出 错误提示
if let error = error {
YHHUD.flash(.error(message: error.errorMsg))
}
}
}
}
private func initView()->Void {
......
......@@ -7,41 +7,31 @@
//
import UIKit
import RxSwift
class YHHomePageViewModel {
let service = YHHomeNetWorkServer.share
let disposeBag = DisposeBag()
class YHHomePageViewModel : YHBaseViewModel {
//数据源
var configModel:YHHomeCofigMode?
let subject = PublishSubject<YHHomeCofigMode>()
}
//接口
extension YHHomePageViewModel {
//请求首页的配置
func getHomeConfig() {
func getHomeConfig(callBackBlock:@escaping (_ success: Bool,_ error:YHErrorModel?)->()) {
let strUrl = YHBaseUrlManager.shared.curURL() + YHAllApiName.Common.homeConfigApi
let _ = YHNetRequest.getRequest(url: strUrl) { json, code in
//1. json字符串 转 对象
guard let model = NetBaseModel.deserialize(dict: json) else {
print("error....底层解析出错了...")
let error : YHErrorModel = YHErrorModel(errorCode:YHErrorCode.dictParseError.rawValue,errorMsg: YHErrorCode.dictParseError.description())
callBackBlock(false,error)
return
}
self.subject.onNext(YHHomeCofigMode())
printLog("model 是 ==> \(model)")
self.configModel = model.data
callBackBlock(true,nil)
} failBlock: { err in
print(err)
callBackBlock(false,err)
}
}
func getRxHomeConfig() {
let strUrl = YHBaseUrlManager.shared.curURL() + YHAllApiName.Common.homeConfigApi
service.getRequest(strUrl).subscribe { json in
self.subject.onNext(YHHomeCofigMode())
} onFailure: { error in
}.disposed(by: DisposeBag())
}
}
......@@ -9,7 +9,7 @@
import UIKit
import PKHUD
public enum BsHUDType {
public enum YHHUDType {
case success(message: String?)
case error(message: String?)
case warning(message: String?)
......@@ -33,7 +33,7 @@ class YHHUD {
public static var isVisible: Bool { return PKHUD.sharedHUD.isVisible }
// MARK: Public methods, PKHUD based
public static func show(_ content: BsHUDType, onView view: UIView? = nil) {
public static func show(_ content: YHHUDType, onView view: UIView? = nil) {
PKHUD.sharedHUD.contentView = contentView(content)
PKHUD.sharedHUD.show(onView: view)
}
......@@ -62,17 +62,17 @@ class YHHUD {
}
// MARK: Public methods, HUD based
public static func flash(_ content: BsHUDType, onView view: UIView? = nil) {
public static func flash(_ content: YHHUDType, onView view: UIView? = nil) {
YHHUD.flash(content, onView: view, delay: 1, completion: nil)
}
public static func flash(_ content: BsHUDType, onView view: UIView? = nil, delay: TimeInterval, completion: ((Bool) -> Void)? = nil) {
public static func flash(_ content: YHHUDType, onView view: UIView? = nil, delay: TimeInterval, completion: ((Bool) -> Void)? = nil) {
YHHUD.show(content, onView: view)
YHHUD.hide(afterDelay: delay, completion: completion)
}
// MARK: Private methods
static func contentView(_ content: BsHUDType) -> UIView {
static func contentView(_ content: YHHUDType) -> UIView {
let todoView: UIView
switch content {
case let .progress(message):
......@@ -107,7 +107,7 @@ extension YHHUD{
duration:TimeInterval = 0.5,
isRemoveBefore: Bool = true,
insets: UIEdgeInsets = UIEdgeInsets(top: 0, left: 20, bottom: 120, right: 20),
contentInsets: UIEdgeInsets = UIEdgeInsets(top: 5, left: 10, bottom: 5, right: 10),
contentInsets: UIEdgeInsets = UIEdgeInsets(top: 8, left: 12, bottom: 8, right: 12),
containerWindow: UIWindow? = nil,
walk:((UILabel)->Void)? = nil){
if isRemoveBefore{
......
//
// BsGestureTableView.swift
// GDKit
//
// Created by GDKit on 01/11/2022.
// Copyright (c) 2022 GDKit. All rights reserved.
//
import UIKit
open class YhGestureTableView: UITableView {
}
// MARK: - UIGestureRecognizerDelegate
extension YhGestureTableView: UIGestureRecognizerDelegate {
public func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWith otherGestureRecognizer: UIGestureRecognizer) -> Bool {
return true
}
open override func gestureRecognizerShouldBegin(_ gestureRecognizer: UIGestureRecognizer) -> Bool {
return true
}
}
open class YhGestureScrollView: UIScrollView {
}
// MARK: - UIGestureRecognizerDelegate
extension YhGestureScrollView: UIGestureRecognizerDelegate {
public func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWith otherGestureRecognizer: UIGestureRecognizer) -> Bool {
return true
}
open override func gestureRecognizerShouldBegin(_ gestureRecognizer: UIGestureRecognizer) -> Bool {
return true
}
}
open class YhGestureCollectionView: UICollectionView {
}
// MARK: - UIGestureRecognizerDelegate
extension YhGestureCollectionView: UIGestureRecognizerDelegate {
public func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWith otherGestureRecognizer: UIGestureRecognizer) -> Bool {
return true
}
open override func gestureRecognizerShouldBegin(_ gestureRecognizer: UIGestureRecognizer) -> Bool {
return true
}
}
......@@ -10,10 +10,10 @@ import Foundation
import SmartCodable
struct NetBaseModel: SmartCodable {
var data : SmartAny?
var data : YHHomeCofigMode?
var code : Int = -1
var msg : String = ""
var other : SmartAny?
// var other : SmartAny?
}
struct TestModel: SmartCodable {
......
......@@ -9,11 +9,50 @@ import Foundation
import Alamofire
import CryptoSwift
//class YHNetErrorModel {
// var responseStatusCode: Int = 0
// var responseStatusCodeStr: String = ""
// var errResponseMsg: String = ""
// var errReaponseCode: String = ""
// var errReaponseTimeOutCode: Int = 0
// var responseErrorType: NetResponseErrorType = .failType
//}
//定义客户端通用的错误码
public enum YHErrorCode : Int32 {
case success = 0
case networkFail = -1
case unknowError = -10000
case dictParseError = -10001
public func description() -> String {
switch self {
case .success:
return "成功"
case .networkFail:
return "网络不可用"
case .unknowError:
return "未知错误"
case .dictParseError:
return "字典解析错误"
default:
return "未知"
}
}
}
public struct YHErrorModel {
var errorCode : Int32 = YHErrorCode.unknowError.rawValue
var errorMsg : String = YHErrorCode.unknowError.description()
}
class YHNetRequest: NSObject {
///成功回调
typealias SuccessHandlerType = (([String:Any],Int) ->Void)
///失败回调
typealias FailureHandlerType = ((YHNetErrorModel) -> Void)
typealias FailureHandlerType = ((YHErrorModel) -> Void)
///请求类型
private var requestType: HTTPMethod = .post
///  URL
......@@ -49,7 +88,7 @@ class YHNetRequest: NSObject {
requestHeader.add(name:"pass",value:"")
let appkey = "958364f87222c200a72414f492bf0e26"
var signOrgiString = "appid=" + "1" + "&" + "timestamp=" + dateStr + "&" + "appkey=" + appkey
let signOrgiString = "appid=" + "1" + "&" + "timestamp=" + dateStr + "&" + "appkey=" + appkey
let sign = signOrgiString.md5()
requestHeader.add(name:"sign",value:sign)
......@@ -94,15 +133,14 @@ class YHNetRequest: NSObject {
}
return requestHeader
}
///开始请求
///开始请求
func startRequest() -> Request? {
let requestHeaders = getHeader()
///不使用缓存
AF.sessionConfiguration.requestCachePolicy = .reloadIgnoringCacheData
AF.sessionConfiguration.timeoutIntervalForRequest = 30
AF.sessionConfiguration.timeoutIntervalForRequest = 20
httpRequest = AF.request(self.url!,method: self.requestType,parameters: self.params,encoding: URLEncoding(destination: .queryString),headers: requestHeaders,interceptor: nil,requestModifier: nil)
// _ = httpRequest?.id
httpRequest?.responseString(completionHandler: { string in
#if DEBUG
......@@ -111,14 +149,6 @@ class YHNetRequest: NSObject {
self.completeHandle(string: string)
})
//
// httpRequest?.responseJSON(completionHandler: { json in
//#if DEBUG
// print("\n网络请求已返回 string=\(json)")
//#endif
// })
return httpRequest
}
/// 请求response完成处理
......@@ -155,16 +185,13 @@ class YHNetRequest: NSObject {
if statusCode == 200 {
guard let suclock = self.success else { return }
let dittt = self.handleJsonObjectNullValue(serverDict)
suclock(dittt as? [String : Any] ?? [:], statusCode)
} else {
let errorModel = YHNetErrorModel.init()
errorModel.responseErrorType = .failType
guard let errorBlock = self.failure else { return }
errorModel.responseStatusCode = statusCode
errorModel.errResponseMsg = errorResponseMsg
errorModel.errReaponseCode = errorCodeStr
let errorModel = YHErrorModel(errorCode: Int32(statusCode), errorMsg: errorResponseMsg)
errorBlock(errorModel)
}
}
......@@ -216,24 +243,3 @@ extension YHNetRequest {
return YHNetRequest().url(url).requestType(.post).success(successBlock).failed(failBlock).startRequest()
}
}
class YHNetErrorModel {
var responseStatusCode: Int = 0
var responseStatusCodeStr: String = ""
var errResponseMsg: String = ""
var errReaponseCode: String = ""
var errReaponseTimeOutCode: Int = 0
var responseErrorType: NetResponseErrorType = .failType
}
enum NetResponseErrorType: Int {
case successType,failType
}
//YHNetRequest.getRequest(url: "需要请求的url") { succeseResponse,responseCode in
//
//   print(succeseResponse,responseCode)
//
//   } failBlock: { errorModel in
//
//}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment