как использовать данные формы в Alamofire - PullRequest
1 голос
/ 11 июля 2020

В почтальоне в разделе body в части form-data, когда я передаю номер мобильного телефона в качестве ключа и номер мобильного телефона в качестве значения Int, я получаю ответ. Но когда я сделал это в коде, я не получил ожидаемого ответа.

мой код

 func fetchRegisterData(){

          let url = registerApi
     
    var mobileNumber = mobilenumberTextfield.text
    
    let parameters = ["mobile" : mobileNumber] as [String : Any]
    
     AF.request(url,method: .post, parameters: parameters, encoding:JSONEncoding.default).responseJSON
              { response in switch response.result {
              case .success(let JSON):
                  print("response is :\(response)")
            
              case .failure(_):
                  print("fail")
                  }
          }
          
      }

Ответы [ 2 ]

1 голос
/ 11 июля 2020

Если вы пытаетесь передать параметры как multipart/form-data, вы должны использовать метод загрузки в Alamofire:

func fetchRegisterData() {
    let parameters = ["mobile": mobilenumberTextfield.text!]

    AF.upload(multipartFormData: { (multiFormData) in
        for (key, value) in parameters {
            multiFormData.append(Data(value.utf8), withName: key)
        }
    }, to: registerApi).responseJSON { response in
        switch response.result {
        case .success(let JSON):
            print("response is :\(response)")

        case .failure(_):
            print("fail")
        }
    }
}
0 голосов
/ 11 июля 2020

Для обычного запроса Alamofire -

При передаче значений в качестве параметра в запросе Alamofire. Вам нужно знать о типе данных значений типа запроса, который действителен для API.

В конце API эти значения анализируются на основе некоторых типов данных. На стороне API должны быть некоторые проверки типа данных.

для mobileNumber, это может быть Int или String

1 - let parameters = ["mobile" : mobileNumber] as [String : Int]
2 - let parameters = ["mobile" : mobileNumber] as [String : String]

для multipart форма запроса данных используйте, нужно использовать что-то вроде ниже. Однако, если вы ничего не загружаете, вам не следует его использовать. Попросите команду API внести изменения в API и запрос обычных параметров

Alamofire.upload(multipartFormData: {  (multipartFormData) in
    
    //Try this
    multipartFormData.append(mobileNumber, withName: "mobile")
    //or this
    multipartFormData.append("\(String(describing: mobileNumber))".data(using: .utf8)!, withName: "mobile")

}, usingThreshold: 10 * 1024 * 1024, to: apiUrl, method: .post, headers: [:], encodingCompletion: { (encodingResult) in

    switch encodingResult {
                
            case .success(let upload, _, _):

            case .failure( _): 
                
            }
})
...