2

如何使用 RxAlamofire 发送 Multipart 数据

例如在Alamofire

let URL = try! URLRequest(url: "http://example.com", method: .post)


Alamofire.upload(multipartFormData: { formData in
    // multiaprt
}, with: URL, encodingCompletion: {(result: SessionManager.MultipartFormDataEncodingResult) in

})
  1. 如何使用RxAlamofire获得相同的行为/功能?
  2. 或者将这个函数包装在 Observable 中的一种方式?
4

1 回答 1

5

您可以像这样轻松地包装该函数:

func wrapper() -> Observable<SomeResponseType> {
    return Observable.create { observer in

        let URL = try! URLRequest(url: "http://example.com", method: .post)

        Alamofire.upload(
            multipartFormData: { formData in
                // multiaprt
            }, 
            with: URL, 
            encodingCompletion: { encodingResult in

                switch encodingResult {

                case .success(let upload, _, _):
                    upload.responseJSON { response in
                        // convert response in something of SomeResponseType
                        // ...
                    observer.onNext(response)
                    observer.onCompleted()
                }
                case .failure(let encodingError):
                    observer.onError(encodingError)
                }
            })

        return Disposables.create()
    }
}
于 2017-01-19T19:21:45.077 回答