如何成功传递字符串数组作为参数alamofire
问题描述:
我有一个端点接受一个字符串数组作为参数,但我不能让它与alamofire一起工作。 我用邮递员测试我的端点,即使在浏览器中它也能正常工作,但是alamofire失败了,只是返回整个事件(就像我没有放任何参数一样)。如何成功传递字符串数组作为参数alamofire
func getQuotes(String url){
//THIS CALL IS NOT WORKING. PARAMETERS ARE NOT SENT PROPERLY - FIX
let stringArray : [String] = ["4250_XSAU", "Test"]
let getQuoteParameters : Parameters = [
//"internal_symbols": stockInternalSymbols
"internal_symbols" : stringArray
]
print("attempting to get quotes on utility queue")
Alamofire.request(url, parameters: getQuoteParameters).responseJSON{ response in
print(response)
/* if (response.result.value != nil){
let jsonResponse = JSON(response.result.value!)
print(jsonResponse)
}
*/
}
}
我做错了什么?当我去到URL +“?internal_symbols =” 4250_XSAU”,‘测试’]在我的浏览器,或邮递员,它工作得很好。
我也试着设置我的‘getQuoteParamaters’变量作为
let getQuoteParameters : Parameters = [
"internal_symbols" : ["4250_XSAU", "Test"]
]
但它不工作也不...应该是同样的事情。
只是为了澄清,这个要求完全无视我的参数,当它应该阵列发送到我的后端。
答
你可以只需将你的字符串数组转换成JSON格式即可下面给出PLE代码:
var request = URLRequest(url: url)
request.httpMethod = "POST"
request.setValue("application/json", forHTTPHeaderField: "Content-Type")
let values = ["06786984572365", "06644857247565", "06649998782227"]
request.httpBody = try! JSONSerialization.data(withJSONObject: values)
Alamofire.request(request)
.responseJSON { response in
// do whatever you want here
switch response.result {
case .failure(let error):
print(error)
if let data = response.data, let responseString = String(data: data, encoding: .utf8) {
print(responseString)
}
case .success(let responseObject):
print(responseObject)
}
}
答
尝试通过添加编码标准在您的要求,如JSONEncoding.default
func getQuotes(String url){
//THIS CALL IS NOT WORKING. PARAMETERS ARE NOT SENT PROPERLY - FIX
let stringArray : [String] = ["4250_XSAU", "Test"]
let getQuoteParameters : Parameters = [
//"internal_symbols": stockInternalSymbols
"internal_symbols" : stringArray
]
print("attempting to get quotes on utility queue")
Alamofire.request(url, method: .post, parameters: getQuoteParameters, encoding: JSONEncoding.default).responseJSON{ response in
print(response)
/* if (response.result.value != nil){
let jsonResponse = JSON(response.result.value!)
print(jsonResponse)
}
*/
}
感谢。
答
我在Swift 3
解决方案:
let text: [String] = ["location.branches.longitude", "location.branches.latitude"]
let params: Parameters = [
"_source": text
]
看起来非常熟悉https://stackoverflow.com/questions/27026916/sending-json-array-via-alamofire – TNguyen