gpt4 book ai didi

ios - AlamoFire 4.X 中的 URL 编码

转载 作者:行者123 更新时间:2023-11-30 12:15:22 25 4
gpt4 key购买 nike

我正在尝试从公共(public)网络服务器获取 JPG 文件,而无需任何类型的身份验证。编码是在 Swift 3 中使用 AlamoFire 4.4 完成的

urlString 具有以下值: https://drscdn.500px.org/photo/36406120/m%3D900_k%3D1_a%3D1/v2?client_application_id=29771&webp=true&sig=97ac488f1336f41d9f3e4a67e6bf99b3bd1aadfb6c9631a6097ff5b4a729a94e

        let url = URL(string: urlString)
let myParameters: [String : AnyObject] = ["myImage": image, "myBlurredImage": blurredImage, "index": index as AnyObject]
let croppedSize = CGSize(width: self.scrollViewWidth!, height: self.scrollViewHeight!)
self.apicounterPerRequest += 1


Alamofire.request(url!, method: .get, parameters: myParameters, encoding: URLEncoding.default)
.validate()
.response { response in
let myImage = myParameters["myImage"] as! UIImageView
let myBlurredImage = myParameters["myBlurredImage"] as! UIImageView
let index = myParameters["index"] as! Int
if let downloadedImage = UIImage(data: response.data!) {
myImage.image = downloadedImage
self.displayed500PxPhoto[index].uiimage = downloadedImage
myBlurredImage.image = PhotoManager.imageWithSize(downloadedImage, size: croppedSize)
completion({
print("Done Downloading")
})

} else {
print("Error : \(response.data)")
}

if response.error != nil {
print(response.error!)
self.showAlert("One or more photos could not be downloaded. Please try again.")
completion({
throw response.error!
})
}
}

我收到 403 错误:

Error : Optional(409 bytes)
responseValidationFailed(Alamofire.AFError.ResponseValidationFailureReason.unacceptableStatusCode(403))

我很确定上面发布的 URL 中的保留字符存在编码问题,但尚不知道如何正确告诉 AlamoFire 如何对其进行编码。任何线索都将受到高度赞赏。感谢您的帮助。

最佳答案

请简单一点

以下是一些可以帮助您的提示:

  • 默认方法是 get,因此您不需要传递它。

  • 参数可能需要为空(因为我认为您不想传递 UIImageView)

  • 不要通过存储["myImage": image]然后再次取回来添加额外的不必要的工作。
  • 不要对索引进行不必要的转换到 AnyObject,因为 Alamofire 接受 Parameters = [String: Any]
  • 响应是数据,因此请使用 responseData 函数

这是我的工作示例:

func testingImage(_ completion: @escaping ((UIImage?) -> Swift.Void)) {
let urlString = "https://drscdn.500px.org/photo/36406120/m%3D900_k%3D1_a%3D1/v2?client_application_id=29771&webp=true&sig=97ac488f1336f41d9f3e4a67e6bf99b3bd1aadfb6c9631a6097ff5b4a729a94e"

guard let url = URL(string: urlString) else { return completion(nil) }

Alamofire.request(url).validate().responseData {
guard let data = $0.data else { return completion(nil) }
guard let image = UIImage(data: data) else { return completion(nil) }

completion(image)
}
}

你可以这样调用它

testingImage() { self.imageView.image = $0 }

$0 表示返回的参数(如果不想指定名称则使用),而不是 response in

关于ios - AlamoFire 4.X 中的 URL 编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45490950/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com