类似的问题之前已经发布过,但略有不同,即:
Alamofire: Sending JSON as request parameter
POST multiple json objects in Alamofire POST method - Swift/IOS
Sending json array via Alamofire
作为最后一个,最接近我当前的问题。然而,这个解决方案对我不起作用。
**我面临的问题是我试图通过Alamofire POST请求发送,这是一个我使用SwiftyJSON构建的JSON。**如下所示:
let url = NSURL(string: orderProductsEndpoint)
let request = NSMutableURLRequest(URL: url!)
request.HTTPMethod = "POST"
request.setValue(requestToken, forHTTPHeaderField: "Authorization:")
request.setValue("application/json", forHTTPHeaderField: "Content-Type")
let params = [ json.object ]
print(params)
request.HTTPBody = try! NSJSONSerialization.dataWithJSONObject( params, options: [])
Alamofire.request(request)
.responseString{ response in
switch response.result {
case .Success(let value):
print("gut")
print(value)
case .Failure(let error):
print("not gut")
print(error)
}
}
但是,这并不奏效,因为我正在与之通信的API似乎不能很好地识别我正在发送的参数。
但是我注意到我发送的不是一个有效的JSON。
[{
car = (
{
cant = 2;
id = 6;
name = "Saudi Plate";
},
{
cant = 1;
id = 5;
name = "Beef Wrap";
}
);
idUser = 58;
"total_loyalty_points" = 4200;
"total_price" = 42000;}]
但在使用以下方法将JSON转换为对象之前
let params = [ json.object ]
它是通过JSONLint验证的有效JSON,如下所示
{
"total_price" : 42000,
"car" : [
{
"id" : "6",
"cant" : 2,
"name" : "Saudi Plate"
},
{
"id" : "5",
"cant" : 1,
"name" : "Beef Wrap"
}
],
"idUser" : 58,
"total_loyalty_points" : 4200
}
问题是我不得不改变JSON的结构,因为这似乎是通过Alamofire发送它的唯一方法,将它转换成一个对象。有没有办法通过Alamofire发送原始JSON?
2条答案
按热度按时间k3fezbri1#
尝试为Alamofire请求中的参数设置json编码。
https://github.com/Alamofire/Alamofire#json-encoding
i7uaboj42#
尝试将您的参数作为Alamofire参数,即[String:任何]。
基本上你要用帖子的方法发送生json。
下面的函数将使用原始json执行发布请求。这也是使用泛型