【发布时间】:2023-03-11 13:36:02
【问题描述】:
我正在尝试通过多部分将文件发送到服务器。它可以是图像或普通文件。我在使用 URLConvertible 时遇到了一些困难。正如我所见,Alamofire 有这样的方法,这可能对我有用:
AF.upload(multipartFormData: <(MultipartFormData) -> Void>, to: <URLConvertible>)
但是在这里,我无法附加将处理 401 错误的拦截器。为此,我创建了这样的变量:
let manager = Session(configuration: URLSessionConfiguration.default, interceptor: CallInterceptor.init(method:HTTPMethod.post))
并且还创建了请求:
var request = URLRequest(url: Pathes.init(endpoint: "photo").resourseUrl)
request.httpMethod = HTTPMethod.post.rawValue
最终用法附在照片选择器上:
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
guard let fileUrl = info[UIImagePickerController.InfoKey.imageURL] as? URL else { return }
if let pickedImage = info[UIImagePickerController.InfoKey.originalImage] as? UIImage {
.....
manager.upload(multipartFormData: { (formData) in
formData.append(fileUrl, withName: "photo", fileName: fileName, mimeType: mediaType)
}, to: request as! URLConvertible).validate(statusCode: 200..<300)
.responseJSON(completionHandler: { (response) in
print(response.debugDescription)
})
}
}
但结果我的应用程序因此类错误而崩溃:
Could not cast value of type 'Foundation.URLRequest' (0x7fff85d1dbd8) to 'Alamofire.URLConvertible' (0x7ffb558a5320)
我想我有两种方法:使用另一种 AF 方法或创建另一种请求类型。但我无法想象哪种方法一方面可以帮助我,另一方面我不知道如何创建 URLConvertible。我认为我可以这样做:
let urlRequest: Alamofire.URLRequestConvertible = request
但应用再次崩溃。我做错了什么?
【问题讨论】:
标签: swift alamofire nsurlrequest