美文网首页SwiftUI实战
SwiftUI实战-网络请求工具封装

SwiftUI实战-网络请求工具封装

作者: ISwiftUI | 来源:发表于2022-05-08 00:02 被阅读0次

实现的请求方式:

  • 1、GET请求
  • 2、POST请求
  • 3、RAW请求
  • 4、FORM请求

使用示例:
1、GET请求

    func GETRequest() {
        let request: NNetworkRequest = NNetworkRequest()
        request.host = "http://www.weather.com.cn/data/sk/101010100.html"
        //request.host = "https://livetest.ofweek.com/api/web"
        request.requestMethod = .GET
        NetworkService.shared.fetch(with: request)
            .catch { error -> AnyPublisher<WeatherModel, Error> in
            // 如果发生错误,则不会往下走
            Fail(error: error).eraseToAnyPublisher()
        } .sink { completion in
            switch completion {
            case .failure(let error):
                if let error = error as? NetworkError {
                    debugPrint(error.description)
                } else {
                    debugPrint(error.localizedDescription)
                }
            default:
                print(completion)
            }
        } receiveValue: { weatherModel in
            print("成功")
        }
        .store(in: &cancellables)
    }

2、POST请求

    func POSTRequest() {
        let request: NNetworkRequest = NNetworkRequest()
        request.host = ""
        request.methodName = "/login/memberlogin"
        request.requestMethod = .POST
        let params = ["account": "", "password": "123456"]
        request.params = params
        NetworkService.shared.fetch(with: request)
            .catch { error -> AnyPublisher<UserInfoModel, Error> in
            // 如果发生错误,则不会往下走
            Fail(error: error).eraseToAnyPublisher()
        } .sink { completion in
            switch completion {
            case .failure(let error):
                if let error = error as? NetworkError {
                    debugPrint(error.description)
                } else {
                    debugPrint(error.localizedDescription)
                }
            default:
                print(completion)
            }
        } receiveValue: { userInfoModel in
            print("成功")
        }
        .store(in: &cancellables)
    }

3、RAW请求

    func RAWRequest() {
        let request: NNetworkRequest = NNetworkRequest()
        request.host = ""
        request.methodName = "/login/memberlogin"
        request.requestMethod = .RAW
        let params = ["account": "", "password": "123456"]
        request.params = params
        NetworkService.shared.fetch(with: request)
            .catch { error -> AnyPublisher<UserInfoModel, Error> in
            // 如果发生错误,则不会往下走
            Fail(error: error).eraseToAnyPublisher()
        } .sink { completion in
            switch completion {
            case .failure(let error):
                if let error = error as? NetworkError {
                    debugPrint(error.description)
                } else {
                    debugPrint(error.localizedDescription)
                }
            default:
                print(completion)
            }
        } receiveValue: { userInfoModel in
            print("成功")
        }
        .store(in: &cancellables)
    }

4、FORM请求

    func FORMRequest() {
        let request: NFileNetworkRequest = NFileNetworkRequest()
        request.host = ""
        request.methodName = "/file/uploadfile2"
        request.requestMethod = .FORM
        let params = ["filetype": "0", "module": "msgchat"]
        request.params = params
        let fileData: NFileData = NFileData.init()
        fileData.name = "file"
        fileData.filename = "file.png"
        fileData.contentType = "image/png"
        guard let data = UIImage.init(named: "test")?.jpegData(compressionQuality: 1.0) else {
            return
        }
        fileData.data = data
        request.files = ["file": fileData]
        NetworkService.shared.fetch(with: request)
            .catch { error -> AnyPublisher<UserInfoModel, Error> in
            // 如果发生错误,则不会往下走
            Fail(error: error).eraseToAnyPublisher()
        } .sink { completion in
            switch completion {
            case .failure(let error):
                if let error = error as? NetworkError {
                    debugPrint(error.description)
                } else {
                    debugPrint(error.localizedDescription)
                }
            default:
                print(completion)
            }
        } receiveValue: { userInfoModel in
            print("成功")
        }
        .store(in: &cancellables)
    }

相关源码如下:

相关文章

网友评论

    本文标题:SwiftUI实战-网络请求工具封装

    本文链接:https://www.haomeiwen.com/subject/gspfurtx.html