我无法将授权承载令牌添加到在Swift 5中使用Moya创建的newtwork层中

问题描述

我使用Moya建立网络层。我已向Header添加承载访问权限,并在日志“未找到个人访问客户端。请创建一个”中显示我。

这是我的代码

对于服务API

enum Service {

case addProperty(property_type_id:Int,property_category_id:Int,user_id:Int,property_name:String,address: String,description:
String,price:Int,city_id:Int,area_id:Int)
                   }

extension Service:targettype,AccesstokenAuthorizable {
 var baseURL: URL {
        return URL(string: Constant.Url.baseUrl)!
       }

var path: String {

switch self { 
     case .addProperty(_,_,_):
            return "/add"
          }
    }

 var method:Moya.Method {
      switch self { 
         case .addProperty(_,_):
                return .post
      }
}

var sampleData: Data {
      switch self {  
         case .addProperty(_,_):
                 return "{'phone':'page'}".data(using: .utf8)!
      }
}

var task: Task { 
       switch self {  
                  case .addProperty(let property_type_id,let property_category_id,let user_id,let property_name,let address,let description,let price,let city_id,let area_id):
            
            var params = [String:Any]()
            params["property_type_id"] = "\(property_type_id)"
            params["property_category_id"] = "\(property_category_id)"
            params["user_id"] = "\(user_id)"
            params["property_name"] = "\(property_name)"
            params["address"] = "\(address)"
            params["price"] = "\(price)"
            params["city_id"] = "\(city_id)"
            params["area_id"] = "\(area_id)"
            
            var formData = [MultipartFormData]()
            for (key,value) in params {
                if let imgData = value as? Data {
                    formData.append(MultipartFormData(provider: .data(imgData),name: key,fileName: "testimage.jpg",mimeType: "image/jpeg"))
                } else {
                    formData.append(MultipartFormData(provider: .data("\(value)".data(using: .utf8)!),name: key))
                }
            }
            return .uploadMultipart(formData
        }
    }

var headers: [String : String]? { 
            switch self { 
                case .addProperty(_,_):
                return ["Content-Type": "multipart/form-data","Authorization": "Bearer+\(Constant.accesstoken.token)"]
            }
    }

 var authorizationType: AuthorizationType? {
          switch self {
                  case .addProperty(_,_):
                   return .bearer
             }
     }
}

这是网络管理员

protocol Networkable {
     var provider: MoyaProvider<Service> { get }
    
 func addProperty(property_type_id:Int,description:String,area_id:Int,completion:@escaping (Data?)->Void)
}

class NetworkManager:Networkable {

          static let shared = NetworkManager()
          private init() {}
         var provider = MoyaProvider<Service>()

func addProperty(property_type_id: Int,property_category_id: Int,user_id: Int,property_name: String,description: String,price: Int,city_id: Int,area_id: Int,completion: @escaping (Data?) -> Void) {
        provider.request(.addProperty(property_type_id: property_type_id,property_category_id: property_category_id,user_id: user_id,property_name: property_name,address: address,description: description,price: price,city_id: city_id,area_id: area_id)) { (result) in
            self.requestCompletion(result: result) { (data) in
                completion(data)
            }
        }
    }


    //MARK: For The Completion
    func requestCompletion(result:Result<Moya.Response,MoyaError>,completion:@escaping (Data?)->Void){
        switch result {
            
        case let .success(response):
            do {
                completion(response.data)
            } catch let err {
                print(err.localizedDescription)
                completion(nil)
            }
            
        case let .failure(error):
            print("error is : \(error.errorDescription)")
            completion(nil)
        }
    }
}

仍然出现错误“消息”:找不到个人访问客户端。请创建一个。”

如何添加授权令牌,或者是否需要在标头.backend PHP laravel中添加任何内容

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)