Inviare JSON in POST in Swift

Mattepuffo's logo
Inviare JSON in POST in Swift

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!


Condividi

Commentami!