簡體   English   中英

Alamofire 4 Swift 3 ParameterEncoding Custom

[英]Alamofire 4 Swift 3 ParameterEncoding Custom

我將我的項目更新為Swift 3和Alamofire 4.我使用的是自定義編碼,但它已改為其他編碼方法。 我無法找到替代/等同於此:

alamoFire.request(urlString, method: HTTPMethod.post, parameters: [:], encoding: .Custom({
        (convertible, params) in

        let mutableRequest = convertible.URLRequest.copy() as! NSMutableURLRequest
        let data = (body as NSString).data(using: String.Encoding.utf8)
        mutableRequest.httpBody = data
        return (mutableRequest, nil)

    }), headers: headers()).responseJSON { (responseObject) -> Void in

        switch responseObject.result {
        case .success(let JSON):
            success(responseObject: JSON)

        case .failure(let error):
            failure(error: responseObject)
        }
    }

我也試過通過制作URLRequest對象和簡單的請求它也給我錯誤

var request = URLRequest(url: URL(string: urlString)!)
    let data = (body as NSString).data(using: String.Encoding.utf8.rawValue)
    request.httpBody = data
    request.httpMethod = "POST"
    request.allHTTPHeaderFields = headers()

    alamoFire.request(request).responseJSON { (responseObject) -> Void in

        switch responseObject.result {
        case .success(let JSON):
            success(JSON)

        case .failure(let error):
            failure(responseObject, error)
        }
    }

請指點我的方向,如何將httpbody與Alamofire 4連在一起

在Alamofire 4.0中,您應該使用ParameterEncoding協議。 這是一個示例,它使任何String UTF8可編碼。

extension String: ParameterEncoding {

    public func encode(_ urlRequest: URLRequestConvertible, with parameters: Parameters?) throws -> URLRequest {
        var request = try urlRequest.asURLRequest()
        request.httpBody = data(using: .utf8, allowLossyConversion: false)
        return request
    }

}

Alamofire.request("http://mywebsite.com/post-request", method: .post, parameters: [:], encoding: "myBody", headers: [:])

試試這個方法?

Alamofire.request(url, method: HTTPMethod.post, parameters: parameters, encoding: URLEncoding.httpBody, headers: nil).responseObject(completionHandler: { (response : DataResponse<T>)  in

})

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM