There is a register screen I created to register the user to the app, but I cannot register the user. In xcode console it says "statusCode should be 2xx, but is 500" Where am I doing wrong? Could you help?
PostModel JSON
struct PostModel: Codable {
let ad: String
let soyad: String
let email: String
let phone: String
let dogumyili: String
let ulke: String
let sehir: String
let ilce: String
let adres: String
let sifre: String
let resifre: String
}
NetworkManager
class NetworkManager {
static let shared = NetworkManager()
func postData(post: PostModel, completion: @escaping (Result<Data, Error>) -> (Void)) {
let parametrs: [String: Any] = [
"ad": post.ad,
"soyad": post.soyad,
"email": post.email,
"phone": post.phone,
"dogumyili": post.dogumyili,
"ulke": post.ulke,
"sehir": post.sehir,
"ilce": post.ilce,
"adres": post.adres,
"sifre": post.sifre,
"resifre": post.resifre
]
guard let url = URL(string: "www.sampleapi.com/sampleapi") else {
return
}
var request = URLRequest(url: url)
request.setValue("application/json; charset=utf-8", forHTTPHeaderField: "Content-Type")
request.httpMethod = "POST"
request.httpBody = parametrs.percentEncoded()
let task = URLSession.shared.dataTask(with: request) { data, response, error in
guard
let data = data,
let response = response as? HTTPURLResponse,
error == nil
else {
print("error", error ?? URLError(.badServerResponse))
return
}
guard (200 ... 299) ~= response.statusCode else {
print("statusCode should be 2xx, but is \(response.statusCode)")
print("response = \(response)")
return
}
do {
let response = try JSONSerialization.data(withJSONObject: data, options: .fragmentsAllowed)
completion(.success(response))
} catch {
completion(.failure(error))
}
}
task.resume()
}
}
extension Dictionary {
func percentEncoded() -> Data? {
map { key, value in
let escapedKey = "\(key)".addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed) ?? ""
let escapedValue = "\(value)".addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed) ?? ""
return escapedKey + "=" + escapedValue
}
.joined(separator: "&")
.data(using: .utf8)
}
}
RegisterButton
Button {
NetworkManager.shared.postData(post: PostModel(ad: loginData.ad, soyad: loginData.soyad, email: loginData.email, phone: loginData.phone, dogumyili: loginData.dogumyili, ulke: loginData.ulke, sehir: loginData.sehir, ilce: loginData.ilce, adres: loginData.adres, sifre: loginData.sifre, resifre: loginData.resifre)) { result in
switch result {
case .success(let result):
print(result)
case .failure(let error):
print(error)
}
}