Swift Alamofire用数据设置请求正文

Swift Alamofire用数据设置请求正文,swift,networking,alamofire,Swift,Networking,Alamofire,在objC中,我会: NSData *postData = ... NSMutableURLRequest *request = ... [request setHTTPBody:postData]; 在斯威夫特阿拉莫菲尔怎么办 Alamofire.request(url, method: .post, parameters: nil, encoding: URLEncoding.default, headers: headers) request.validate().respons

在objC中,我会:

NSData *postData = ...
NSMutableURLRequest *request = ...
[request setHTTPBody:postData];
在斯威夫特阿拉莫菲尔怎么办

Alamofire.request(url, method: .post, parameters: nil, encoding: URLEncoding.default, headers: headers)
    request.validate().responseJSON {
...
}

Alamfire接受
[字符串:任意]

 do {
     let params  = try JSONSerialization.jsonObject(with: data, options: []) as! [String:Any]
     Alamofire.request(url, method: .post, parameters:params, encoding: JSONEncoding.default, headers: headers)
    request.validate().responseJSON {
     ...
    }
  } 
  catch {
      print(error)
  }

Swift 4.2

Alamofire.request(url, method: .post, parameters: [:], encoding: "test", headers: [:])  

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
    }

}

Alamfire接受
[字符串:任意]

 do {
     let params  = try JSONSerialization.jsonObject(with: data, options: []) as! [String:Any]
     Alamofire.request(url, method: .post, parameters:params, encoding: JSONEncoding.default, headers: headers)
    request.validate().responseJSON {
     ...
    }
  } 
  catch {
      print(error)
  }

Swift 4.2

Alamofire.request(url, method: .post, parameters: [:], encoding: "test", headers: [:])  

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和Swifty Json库进行适当的api调用和Json解析

迅捷Json

阿拉莫菲尔

首先在[String:Any]类型中创建参数列表

func CallAPI(){

    let parameters: [String: Any] = [
    "Username": "Admin",
    "Password": "123456",
    "Language_Code": "EN"]


    Alamofire.request("Your API Url", method: .post, parameters: parameters, encoding: JSONEncoding.default)
    .responseJSON { response in

    if((response.result.value) != nil) {

    let ResultJson = JSON(response.result.value!)

    print("ResultJson==",ResultJson)
    }
 }
}

使用Alamofire和Swifty Json库进行适当的api调用和Json解析

迅捷Json

阿拉莫菲尔

首先在[String:Any]类型中创建参数列表

func CallAPI(){

    let parameters: [String: Any] = [
    "Username": "Admin",
    "Password": "123456",
    "Language_Code": "EN"]


    Alamofire.request("Your API Url", method: .post, parameters: parameters, encoding: JSONEncoding.default)
    .responseJSON { response in

    if((response.result.value) != nil) {

    let ResultJson = JSON(response.result.value!)

    print("ResultJson==",ResultJson)
    }
 }
}

设置
参数
[/some key:“some data”]和
编码:
JSONEncoding。默认值
取决于
postData
的性质,因为一般情况下,您宁愿只提供阿拉莫菲尔
字典
,它会为您准备请求的正文。如果您必须构建请求,实际上您可以直接使用Alamofire(例如)发送请求,但在这种情况下,您可以将URL和方法设置为
URLRequest
的一部分,而不是此方法的参数。你必须非常小心标题之类的东西。也许你可以告诉我们postData的样子,我们可以提供进一步的建议。实际上,它是一个zip存档。如下所示,Sh_Khan注释可能会有所帮助。设置
参数
[“一些键”:“一些数据”]和
编码:
jsonecoding。默认值
它取决于
postData
的性质,因为通常情况下,您希望只提供阿拉莫菲尔
字典
,它将为您准备请求的主体。如果您必须构建请求,实际上您可以直接使用Alamofire(例如)发送请求,但在这种情况下,您可以将URL和方法设置为
URLRequest
的一部分,而不是此方法的参数。你必须非常小心标题之类的东西。也许你可以告诉我们postData的样子,我们可以提供进一步的建议。实际上,它是一个zip存档。看起来下面的Sh_Khan注释可以提供帮助。let data=“test”。data(使用:.utf8)let params=try?JSONSerialization.jsonObject(带有:data,选项:[])as![String:Any]params是nil??因为test是一个字符串,它的数据不能被强制转换为
[String:Any]
,你能让它像
[“someKey”:“test”]
?在这种情况下,我可以设置参数:作为字典而不必尝试JSONSerialization等,但我需要与目标C中相同的东西:[请求setHTTPBody:postData];我不知道怎么做。let data=“test”。data(使用:.utf8)let params=try?JSONSerialization.jsonObject(带有:data,选项:[])as![String:Any]params是nil??因为test是一个字符串,它的数据不能被强制转换为
[String:Any]
,你能让它像
[“someKey”:“test”]
?在这种情况下,我可以设置参数:作为字典而不必尝试JSONSerialization等,但我需要与目标C中相同的东西:[请求setHTTPBody:postData];我不知道怎么做。