簡體   English   中英

在Swift 4中從uitextfields將數據發布到服務器

[英]Posting data to server from uitextfields in Swift 4

我是Swift 4編程的新手。 這是我的第一個iOS項目。 我在使用JSON將數據發送到服務器時遇到困難!

服務器接收到的所有參數文本字段均為空。

let pram = ["departement": departmentTextField.text, "fname": firstNameTextField.text, "lname": lastNameTextField.text, "email": emailTextField.text, "mbl": mobileNumberTextField.text, "address": residentialTextField.text,"subrub": suburbTextField.text,"dob": chooseDateofBTextField.text,"gender": genderTextField.text, "cardno": medicareCardNoTextField.text, "edate":  medicareExpiryTextField.text, "source":  howDidText.text, "condition": conditionTextField.text, "appdate": aptDOPTextField.text]

let url = URL(string: "//myAPI")!
var request = URLRequest(url: url)
request.setValue("application/x-www-form-urlencoded", forHTTPHeaderField: "Content-Type")
request.httpMethod = "POST"
let postString = pram
request.httpBody = (postString as AnyObject).data
let task = URLSession.shared.dataTask(with: request) { data, response, error in
    guard let data = data, error == nil else {                                                 // check for fundamental networking error
        print("error=\(error)")

        let alert = UIAlertController(title: "Connection Lost ", message: "Please Try Again Later", preferredStyle: UIAlertControllerStyle.alert)
        alert.addAction(UIAlertAction(title: "Done", style: UIAlertActionStyle.default, handler: nil))
        self.present(alert, animated: true, completion: nil)

        return
    }

    if let httpStatus = response as? HTTPURLResponse, httpStatus.statusCode != 200 {
        print("statusCode should be 200, but is \(httpStatus.statusCode)")
        print("response = \(response)")
    }

    let responseString = String(data: data, encoding: .utf8)
    print("responseString = \(responseString)")

    let alert = UIAlertController(title: "Your Appointement has been placed", message: "", preferredStyle: UIAlertControllerStyle.alert)
    alert.addAction(UIAlertAction(title: "Done", style: UIAlertActionStyle.default, handler: nil))
    self.present(alert, animated: true, completion: nil)
}
task.resume()

我建議您使用Almofire 這是一個非常簡單的圍兜。 您可以輕松地使用它來發送服務器請求,如下所示:

let parameters: Parameters = ["departement": departmentTextField.text!] //and so on
Alamofire.request("apiPath", method: .post, parameters: parameters).responseJSON { response in
   if let json = response.result.value {
       print("JSON: \(json)") // serialized json response
   }

   if let data = response.data, let utf8Text = String(data: data, encoding: .utf8) {
        print("Data: \(utf8Text)") // original server data as UTF8 string
    }
}

根據您的問題,您必須插入“!” 在文本字段的文本之后。

這是almofire文檔: https : //github.com/Alamofire/Alamofire/blob/master/Documentation/Usage.md#making-a-request

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM