2017-08-09 36 views
1

我不得不发送请求具有字段,诸如Alamofire服务器请求转换整数参数串

id:1 

的问题是,当我检查Apache日志我看到字段是在

id:"1" 

形式这不是让整数1,我得到字符串“1”。这里是我的代码

let parameters: Parameters = [ 
     "viewModel":viewModel]; 
    let headers: HTTPHeaders = [ 
     "Authorization": "Bearer " + getToken(), 
     "Accept": "application/json" 
    ] 
    Alamofire.request(setUrl(),method:.post,parameters:parameters,headers: headers).responseJSON{ 
     response in 
     print("Response:\(String(describing:response.result.value))") 

     switch response.result { 
     case .success: 
      self.status = true; 
      if let data = response.data, let utf8Text = String(data: data, encoding: .utf8) { 
       self.responseString = utf8Text 
      } 
      self.responseJSON = JSON(response.result.value as Any) 
     case .failure: 
      self.status = false; 
     } 
     completed() 
    } 

在请求启动之前,我已确保所有必填字段都是整数。其他字段是字符串,因此我正在使用字典型号[String:Any] 我做错了什么?我需要确保整数字段保持整数。

+0

您必须使用NSNumber而不是Integer来提出请求。 – shahnilay86

回答

0

我知道这是一个迟到的回复,肯定会帮助别人。我也面临同样的问题,花了几个小时才弄明白。

您需要在Alamofire请求中设置编码来解决此问题。

编码:JSONEncoding.default

所以该请求会像

Alamofire.request(setUrl(),方法:.POST,参数:参数,编码方式:JSONEncoding.default,页眉:头).responseJSON { 在

0

设置编码响应于

JSONEncoding.default 

为我完美工作。

请求,也可以像

Alamofire.request(url, method: .post, parameters: object, encoding: JSONEncoding.default) 

,并与其他类型的方法太伟大工程!