RxAlamofire 使用 json 主体进行 post 调用

RxAlamofire make post call with json body

我想使用 RxAlamofire 进行 post 调用,但无法找到任何方法

尝试使用 requestJSON 方法但没有参数可传递 post json in

 RxAlamofire.requestJSON(.post, url)

如何在 RxAlamofire

中进行 post 调用并将 json 数据传递给 post 调用

使用此函数和适当的参数编码

public func urlRequest(_ method: Alamofire.HTTPMethod,
                   _ url: URLConvertible,
                   parameters: [String: Any]? = nil,
                   encoding: ParameterEncoding = URLEncoding.default,
                   headers: [String: String]? = nil)

使用以下代码

  var request = URLRequest(url: URL(string: "https://some_url")!)
    //Following code to pass post json 
    request.httpBody = json
    request.httpMethod = "POST"
    request.setValue("application/json", forHTTPHeaderField: "Content-Type")
    RxAlamofire.request(request as URLRequestConvertible).responseJSON().asObservable()

使用 jsonEncoding

RxAlamofire.requestJSON(.post, url, encode: JsonEncoding.default)

对我有用~

amodkanthe 的解决方案有效。但是它的 return 值并不友好。所以我稍微改了一下

    var request = URLRequest(url: URL(string: "https://some_url")!)
    request.httpBody = jsonData  // jsonData is a Data type
    request.httpMethod = "POST"
    request.setValue("application/json", forHTTPHeaderField: "Content-Type") // this line is important
    RxAlamofire.requestJSON() //=> returns a Observable<(HttpURLResponse, Any)>, the `Any` type is actually a dictionary

p.s。我使用的版本是 RxAlamofire(6.1.1)