2017-05-08 69 views
2

我有一个端点接受一个字符串数组作为参数,但我不能让它与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"] 
    ] 

但它不工作也不...应该是同样的事情。

只是为了澄清,这个要求完全无视我的参数,当它应该阵列发送到我的后端。

回答

1

你可以只需将你的字符串数组转换成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) 
    } 
    } 
+0

看起来非常熟悉https://stackoverflow.com/questions/27026916/sending-json-array-via-alamofire – TNguyen

0

尝试通过添加编码标准在您的要求,如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) 
    } 
    */ 
} 

感谢。

0

我在Swift 3解决方案:

let text: [String] = ["location.branches.longitude", "location.branches.latitude"] 

let params: Parameters = [ 
    "_source": text 
] 
相关问题