Inviare JSON in POST in Swift
In pratica devo inviare le credenziali in formato JSON alla mia API da iOS con Swift.
Il web service richiede i dati in questo formato:
{
"user": "...,
"password": "..."
}
Vediamo come inviarli:
import Foundation
import CryptoKit
struct AuthService {
func hashStr(value: String) -> String {
let hashed = SHA512.hash(data: Data(value.utf8))
let hp = hashed.compactMap { String(format: "%02x", $0) }.joined()
return hp
}
func doLogin(email: String, password: String) {
let body: [String: String] = ["user": email, "password": hashStr(value: password)]
let jsonBody = try? JSONSerialization.data(withJSONObject: body, options: .prettyPrinted)
let url = URL("https://www.sito.com/login.php")
var request = URLRequest(url: url!)
request.httpMethod = "POST"
request.httpBody = jsonBody
request.setValue("application/json", forHTTPHeaderField: "Content-Type")
request.addValue("application/json",forHTTPHeaderField: "Accept")
URLSession.shared.dataTask(with: request) {
(data, response, error) in
if let data = data, let dataString = String(data: data, encoding: .utf8) {
print("Response data string:\n \(dataString)")
}
}.resume()
}
}
Come vedete eseguiamo anche l'hash della password.
Per quanto riguarda la risposta, qui ci limitiamo a leggerla senza farci nulla.
Sarà oggetto di un prossimo articolo.
Enjoy!
swift ios json urlrequest
Commentami!