0
我试图上传jsonSerialization和gzip中的对象数组。我写了一个结构,如github中所述。Alamofire调用中的额外参数“方法” - 自定义ParameterEncoding
struct JSONDocumentArrayEncoding: ParameterEncoding {
private let array: [Document]
init(array:[Document]) {
self.array = array
}
func encode(_ urlRequest: URLRequestConvertible, with parameters: Parameters?) throws -> URLRequest {
var urlRequest = urlRequest.urlRequest
let data = try JSONSerialization.data(withJSONObject: array, options: [])
if urlRequest!.value(forHTTPHeaderField: "Content-Type") == nil {
urlRequest!.setValue("application/json", forHTTPHeaderField: "Content-Type")
}
urlRequest!.httpBody = data
return urlRequest!
}
}
然后,在请求
request = customAlamofireManager.request(
ServerURL ,
method: .post,
parameters: [objects],
encoding: JSONDocumentArrayEncoding,
headers: headers
)
错误是 “在呼叫额外的参数的方法”。这个问题已在github1508 here中讨论过但我看不到解决方案。由于该参数被定义为[string:object],因此无法传入数组。因此,即使使用自定义的编码结构,也无法传递此正文数据。我正在考虑周围的工作可能会添加一个虚拟键到数组并修改服务器API以捕获字典的价值。但是没有理想。
只是试图添加一个随机密钥到数组使其成为一个字典,如[“数据”:[obj]],仍然是相同的错误。因为结构需要一个数组,而不是字典。所以它不会工作。 – Ning