- 设置请求头部信息 设
- 置超时时间
- 自定义插件
-
自签名证书
注意:以下所出现的 NetAPIManager 跟官网上demo的** GitHub**是一样类型的文件,都是这个enum实现一个协议TargetType,点进去可以看到TargetType定义了我们发送一个网络请求所需要的东西,什么baseURL,parameter,method等一些计算性属性,我们要做的就是去实现这些东西,当然有带默认值的我们可以不去实现,但是设置头部信息跟超时时间就要修改这些系统默认设置了。
为了看得更加清楚,贴上 NetAPIManager 文件的内容
// // NetAPIManager.swift // NN110 // // Created by 陈亦海 on 2017/5/12. // Copyright © 2017年 陈亦海. All rights reserved. // import Foundation import Moya enum NetAPIManager { case Show case upload(bodyData: Data) case download case request(isTouch: Bool, body: Dictionary<String, Any>? ,isShow: Bool) } extension NetAPIManager: TargetType { var baseURL: URL {//服务器地址 switch self { case .request( _, _, _): return URL(string: "https://www.easck.com//httpbin.org")! } } var path: String {//具体某个方法的路径 switch self { case .Show: return "" case .upload(_): return "" case .request(_, _, _): return "/app/json.do" case .download: return "" } } var method: Moya.Method {//请求的方法 get或者post之类的 switch self { case .Show: return .get case .request(_, _, _): return .post default: return .post } } var parameters: [String: Any]? {//请求的get post给服务器的参数 switch self { case .Show: return nil case .request(_, _, _): return ["msg":"H4sIAAAAAAAAA11SSZJFIQi7EqPAEgTvf6TP62W7sMoSQhKSWDrs6ZUKVWogLwYV7RjHFBZJlNlzloN6LVqID4a+puxqRdUKVNLwE1TRcZIC/fjF2rPotuXmb84r1gMXbiASZIZbhQdKEewJlz41znDkujCHuQU3dU7G4/PmVRnwArMLXukBv0J23XVahNO3VX35wlgce6TLUzzgPQJFuHngAczl6VhaNXpmRLxJBlMml6gdLWiXxTdO7I+iEyC7XuTirCQXOk4dotgArgkH/InxVjfNTnE/uY46++hyAiLFuFL4cv1Z8WH5DgB2GnvFXMh5gm53Tr13vqqrEYtcdXfkNsMwKB+9sAQ77grNJmquFWOhfXA/DELlMB0KKFtHOc/ronj1ml+Z7qas82L3VWiCVQ+HEitjTVzoFw8RisFN/jJxBY4awvq427McXqnyrfCsl7oeEU6wYgW9yJtj1lOkx0ELL5Fw4z071NaVzRA9ebxWXkFyothgbB445cpRmTC+//F73r1kOyQ3lTpec12XNDR00nnq5/YmJItW3+w1z27lSOLqgVctrxG4xdL9WVPdkH1tkiZ/pUKBGhADAAA="] default: return nil } } var sampleData: Data { //编码转义 return "{}".data(using: String.Encoding.utf8)! } var task: Task { //一个请求任务事件 switch self { case let .upload(data): return .upload(.multipart([MultipartFormData(provider: .data(data), name: "file", fileName: "gif.gif", mimeType: "image/gif")])) default: return .request } } var parameterEncoding: ParameterEncoding {//编码的格式 switch self { case .request(_, _, _): return URLEncoding.default default: return URLEncoding.default } } //以下两个参数是我自己写,用来控制网络加载的时候是否允许操作,跟是否要显示加载提示,这两个参数在自定义插件的时候会用到 var touch: Bool { //是否可以操作 switch self { case .request(let isTouch, _, _): return isTouch default: return false } } var show: Bool { //是否显示转圈提示 switch self { case .request( _, _,let isShow): return isShow default: return false } } }










