Skip to content

Instantly share code, notes, and snippets.

@MaatheusGois
Last active May 27, 2019 05:24
Show Gist options
  • Save MaatheusGois/8ee466f3158cd4ec9a0acb84e88a460a to your computer and use it in GitHub Desktop.
Save MaatheusGois/8ee466f3158cd4ec9a0acb84e88a460a to your computer and use it in GitHub Desktop.
//Não esqueca de importar o Foundation
func postRequest(url: String, params: [String: String],
completion: @escaping ([String: Any]?, Error?) -> Void){
//URL válida
guard let URL = URL(string: url) else {
completion(nil, nil)
return
}
//Cria a representacão da requisição
let request = NSMutableURLRequest(url: URL)
//Converte as chaves em valores pares para os parametros em formato de String
let postString = params.map { "\($0.0)=\($0.1)" }.joined(separator: "&")
//Atribui à requisiçāo o método POST
request.httpMethod = "POST"
//Codifica o corpo da mensagem em "data" usando utf8
request.httpBody = postString.data(using: String.Encoding.utf8)
//Cria a tarefa de requisição
let task = URLSession.shared.dataTask(with: request as URLRequest) {
(data, response, error) in
do {
if let data = data {
//A resposta chegou
let response = try JSONSerialization.jsonObject(with: data, options: [])
completion(response as? [String : Any], nil)
}
else {
//Não houve resposta
completion(nil, nil)
}
} catch let error as NSError {
//Houve um erro na comunicao com o servidor
completion(nil, error)
}
}
//Aciona a tarefa
task.resume()
}
//Coloque a URL da sua API aqui
let url = "http://www.SuaURL.com"
//Aqui vão os parâmetros da sua requisição
let params = [
"nome":"Matheus Gois",
"sobreNome":"Gois",
]
//Chamando a funcão POST
postRequest(url: url, params: params){
(result, err) in
//Aqui você tem seu resultado
if let res:Bool = (result?.values.first as? Bool) {
if(res) {
//Aqui res podera assumir dois valores, true ou false
print("sua requisicao foi realizada com sucesso")
} else {
//Aqui voce pode tratar os erros
print("a requisicao nao funcionou")
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment