我的项目在目标C中,我正在把它转换成Swift。目标-C项目使用AFNetworking进行联网。在新的快速项目中,我正在使用Moya。
我已经创建了名为PhTrackerAPI的Moya目标,
public enum PhTrackerAPI {
case login
case checkNumberExist(phoneno: String, code: String)
case todos
}
extension PhTrackerAPI: TargetType {
public var baseURL: URL {
return URL(string: "http://numberfinding.com/vaghani/call2loc/Api_c2l")!
}
public var path: String {
switch self {
case .login: return "/login"
case .checkNumberExist: return "/check_number_exist"
case .todos: return "/todos"
}
}
public var method: Moya.Method {
switch self {
case .login, .checkNumberExist:
return .post
case .todos:
return .get
}
}
public var sampleData: Data {
return Data()
}
var parameters: [String: Any]? {
switch self {
case .login:
return [:]
case .checkNumberExist(let phoneno, let code):
return ["phone":phoneno,
"country_code":code]
case .todos:
return nil
}
}
public var task: Task {
switch self {
case .login, .checkNumberExist:
return .requestParameters(parameters: parameters!, encoding: JSONEncoding.default)
default: return .requestPlain
}
}
public var headers: [String: String]? {
return ["Content-Type": "application/json"]
}
// 7
public var validationType: ValidationType {
return .successCodes
}
}当我从Postman请求API时,它会给出响应,但是如果我通过Moya调用它,它就会出现"Parameter“的错误。为什么会发生此错误?有人能帮我吗?
编辑:

发布于 2020-03-21 05:46:18
我的API需要表单数据中的参数。因此,我有以下更新的任务,它现在工作良好。
var task: Task {
switch self {
case .checkNumberExist:
var multipartData = [MultipartFormData]()
for (key, value) in parameters! {
let formData = MultipartFormData(provider: .data("\(value)".data(using: .utf8)!), name: key)
multipartData.append(formData)
}
return .uploadMultipart(multipartData)
default: return .requestPlain
}
}https://stackoverflow.com/questions/60754230
复制相似问题