【问题标题】:How to successfully pass string array as parameter alamofire如何成功地将字符串数组作为参数传递 alamofire
【发布时间】:2017-10-06 22:15:41
【问题描述】:

我有一个接受字符串数组作为参数的端点,但我无法让它与 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","Test"] 时,它工作得很好。

我还尝试将“getQuoteParamaters”变量设置为

let getQuoteParameters : Parameters = [
        "internal_symbols" : ["4250_XSAU", "Test"]
    ]

但它也不起作用......它应该是一样的。

澄清一下,当它应该将数组发送到我的后端时,这个请求完全忽略了我的参数。

【问题讨论】:

    标签: ios swift swift3 httprequest alamofire


    【解决方案1】:

    您可以简单地传递您的字符串数组,将其转换为 JSON 格式。如下面的示例代码所示:

      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)
        }
      }
    

    【讨论】:

    【解决方案2】:

    我在Swift 3中的解决方案:

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

    【讨论】:

      【解决方案3】:

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

      谢谢。

      【讨论】:

        猜你喜欢
        • 2017-06-14
        • 1970-01-01
        • 1970-01-01
        • 2020-05-01
        • 1970-01-01
        • 2012-11-15
        • 1970-01-01
        • 2017-08-10
        相关资源
        最近更新 更多