Отправка запроса всегда заключена в необязательный текст

У меня очень похожая проблема, как в Почему тело http-запроса всегда заключено в необязательный текст в приложении Swift
но я не могу применить решение из этой ветки к своему коду, потому что у меня нет request.setValue.
Кто-нибудь знает, что мне нужно сделать, чтобы избавиться от Факультативного?
Мой код:

 @IBAction func LoginButtonTapped(sender: UIButton) {

let username = UsernameTextField.text
let password = PasswordTextField.text

if(username!.isEmpty || password!.isEmpty) {return; }let request = NSMutableURLRequest (URL: NSURL(string: "http://myip/loginregister.php")!)
request.HTTPMethod = "POST"let postString = "username=\(username)&password=\(password)"request.HTTPBody = postString.dataUsingEncoding(NSUTF8StringEncoding)
let task = NSURLSession.sharedSession().dataTaskWithRequest(request) { data, response, error in
guard error == nil && data != nil else {
// check for fundamental networking error
print("error=\(error)")
return
}

let data = postString.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false)!do {
if let json = try NSJSONSerialization.JSONObjectWithData(data, options: []) as? NSDictionary {
let success = json["success"] as? Int                                  // Okay, the `json` is here, let's get the value for 'success' out of it
print("Success: \(success)")
} else {
let jsonStr = NSString(data: data, encoding: NSUTF8StringEncoding)    // No error thrown, but not NSDictionary
print("Error could not parse JSON: \(jsonStr)")
}
} catch let parseError {
print(parseError)                                                          // Log the error thrown by `JSONObjectWithData`
let jsonStr = NSString(data: data, encoding: NSUTF8StringEncoding)
print("Error could not parse JSON: '\(jsonStr)'")
}
}

task.resume()

1

Решение

Вы должны развернуть значение, когда сначала получите текст из UITextField, потому что text собственностью UITextField разрешать nil

let username = UsernameTextField.text!
let password = PasswordTextField.text!

Объясни подробней

Когда вы разворачиваете text UITextField, username а также password будет not nil переменная.
Код сравнения пустой должен быть:

if(username.isEmpty || password.isEmpty) {return }

Если вы не разворачиваете, когда вы используете это "\(username)"Вы пытаетесь преобразовать nilМожно указывать на строку, поэтому к результату строки будет добавлен текст «Необязательно».

Решить проблему с Content-Type для запроса

Вставьте эту строку в свой код. Я не верю, что у вас нет setValue метод.

request.setValue("application/x-www-form-urlencoded", forHTTPHeaderField:"Content-Type")
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]