我的同事后端程序员说他已经配置了一个API,希望从我的移动应用程序中收到类似的东西:
[{"id":50},{"id":60}]
我使用Alamofire接收要发送的param字典。但我相信这也是使用NSURLSession或任何其他第三方插件的相同机制。
问题是:我应该如何构造字典以发送一组id,比如HTTP表单如何具有多个具有相同id的文本字段,然后它将作为id数组在服务器端接收?我到目前为止所做的一切都失败了:
param.setValue(50, forKey:"id");
param.setValue(60, forKey:"id");
// this only send the last single value
param.setValue([50, 60], forKey:"id");
// this results in error (415 unsupported media type)
param.setValue(50, forKey:"id[0]");
param.setValue(60, forKey:"id[1]");
// this also results in error (415 unsupported media type)
如何正确发送此内容,就像网络表单发送一样?感谢。
答案 0 :(得分:3)
我认为您的问题的关键字是" Alamofire发送json "
如果您的服务器接受json数据,您可以这样做:
let request = NSMutableURLRequest(URL: url)
request.HTTPMethod = "POST"
request.setValue("application/json", forHTTPHeaderField: "Content-Type")
let values = [["id":50],["id":60]]
request.HTTPBody = try! NSJSONSerialization.dataWithJSONObject(values, options: [])
Alamofire.request(request)
.responseJSON { response in
// do whatever you want here
}
祝你好运!
答案 1 :(得分:2)
第一种方法的问题是你要覆盖密钥id
的值,这就是它只发送最后一个值的原因。尝试将params作为数组发送。
let dict = NSMutableArray()
param.setValue(50, forKey:"id")
dict.addObject(param)
param.setValue(60, forKey:"id")
dict.addObject(param)
将dict
作为请求方法的参数传递。