代码之家  ›  专栏  ›  技术社区  ›  Kazunori Takaishi

AlamoFileImage:如何使用POST请求下载图像

  •  1
  • Kazunori Takaishi  · 技术社区  · 6 年前

    AlamofireImage通常应该使用GET方法进行请求。但在我们的项目中,要下载图像,我们必须使用POST方法进行请求,因为我们发送访问令牌。我在Stack Overflow中搜索了类似的问题,但没有找到足够的答案。有人知道如何通过POST请求下载吗?

    URL如下所示:

    https://host_name/project_name/GetImage

    2 回复  |  直到 6 年前
        1
  •  1
  •   Leo    6 年前

    您可以使用 af_setImage 方法来自 AlamofireImage 扩展 UIImageView 并通过任何 URLRequestConvertible 参数例如,创建 URLRequest 具有Alamofire初始值设定项的实例:

    let urlPath = "https://host_name/project_name/GetImage"
    if var imageRequest = try? URLRequest(url: urlPath, method: .post) {
        imageRequest.addValue("token", forHTTPHeaderField: "token_field")
        imageView.af_setImage(withURLRequest: imageRequest)
    }
    
        2
  •  1
  •   Kazunori Takaishi    6 年前

    因为我们必须在HTTPBodyData中发送参数,根据Loe的回答,我对代码进行了一些更改。以下是我们的新代码:

    let urlPath = "https://host_name/project_name/GetImage"
    let parameters:[String: Any] = [
            "token": "tokenValue",
            "imageName": "imageName"
        ]
    let dataRequest = Alamofire.request(urlPath,
                                        method: HTTPMethod.post,
                                        parameters: parameters,
                                        encoding: JSONEncoding.default,
                                        headers: [:])
    guard let imageRequest = dataRequest.request else {
        return
    }
    imageView.af_setImage(withURLRequest: imageRequest)
    

    重点是首先,我们创建 DataRequest 对象,然后将其转换为 URLRequest 使用键入 Alamofire.request() 方法