Remember to maintain security and privacy. Do not share sensitive information. Procedimento.com.br may make mistakes. Verify important information. Termo de Responsabilidade
Realizar requisições de rede é uma tarefa comum no desenvolvimento de aplicativos para dispositivos Apple, como iPhone e iPad. Utilizando a linguagem Swift, é possível fazer essas requisições de forma eficiente e segura. Neste artigo, vamos explorar como executar requisições de rede usando a biblioteca URLSession, que é parte do framework Foundation.
Exemplo 1: Requisição GET simples
Para realizar uma requisição GET, você pode usar o seguinte código Swift:
import Foundation
let url = URL(string: "https://api.example.com/data")!
let task = URLSession.shared.dataTask(with: url) { data, response, error in
if let error = error {
print("Erro: \(error.localizedDescription)")
return
}
guard let data = data else {
print("Dados não encontrados")
return
}
if let responseString = String(data: data, encoding: .utf8) {
print("Resposta do servidor: \(responseString)")
}
}
task.resume()
Este exemplo cria uma requisição GET para "https://api.example.com/data". A função dataTask
envia a requisição e, ao receber a resposta, verifica se há erros, se os dados estão presentes e, em seguida, converte os dados em uma string para exibição.
Exemplo 2: Requisição POST com corpo JSON
Para enviar dados para o servidor, você pode realizar uma requisição POST com um corpo JSON:
import Foundation
let url = URL(string: "https://api.example.com/submit")!
var request = URLRequest(url: url)
request.httpMethod = "POST"
request.setValue("application/json", forHTTPHeaderField: "Content-Type")
let json: [String: Any] = ["name": "John Doe", "age": 30]
let jsonData = try? JSONSerialization.data(withJSONObject: json)
request.httpBody = jsonData
let task = URLSession.shared.dataTask(with: request) { data, response, error in
if let error = error {
print("Erro: \(error.localizedDescription)")
return
}
guard let data = data else {
print("Dados não encontrados")
return
}
if let responseString = String(data: data, encoding: .utf8) {
print("Resposta do servidor: \(responseString)")
}
}
task.resume()
Neste exemplo, criamos um dicionário JSON e o serializamos em jsonData
. A requisição POST é configurada para enviar esse JSON como corpo da requisição.
Exemplo 3: Tratamento de erros e resposta
É importante tratar adequadamente os erros e a resposta do servidor. Aqui está um exemplo de como fazer isso:
import Foundation
let url = URL(string: "https://api.example.com/data")!
let task = URLSession.shared.dataTask(with: url) { data, response, error in
if let error = error {
print("Erro: \(error.localizedDescription)")
return
}
guard let httpResponse = response as? HTTPURLResponse, (200\...299).contains(httpResponse.statusCode) else {
print("Resposta inválida do servidor")
return
}
guard let data = data else {
print("Dados não encontrados")
return
}
do {
let jsonResponse = try JSONSerialization.jsonObject(with: data, options: [])
print("Resposta JSON: \(jsonResponse)")
} catch {
print("Erro ao parsear JSON: \(error.localizedDescription)")
}
}
task.resume()
Neste exemplo, verificamos se a resposta HTTP está no intervalo de sucesso (200-299) e tentamos parsear a resposta como JSON.