Alguém já conseguiu consumir um webservice ou web api c# no IOS??, tentei a biblioteca Alamofire que a Joviane me passou mas não consegui, será que não existe nada nativo do Swift para fazer isso?
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
Alguém já conseguiu consumir um webservice ou web api c# no IOS??, tentei a biblioteca Alamofire que a Joviane me passou mas não consegui, será que não existe nada nativo do Swift para fazer isso?
Oi Julio,
o uso da lib Alamofire (para Swift) é a forma mais indicada para lidar com consumo de informações fornecidas por um webservice. Olha só como ela funciona:
Como ela é uma biblioteca criada pela comunidade, precisamos dizer que nosso projeto dependerá de um repositório chamado CocoaPods.
Depois dessa configuração inicial, no arquivo Podfile (que será gerado durante a configuração do cocoapods), temos que baixar a lib Alamofire.
Supondo que o nome do seu projeto iOS seja ProjetoIOS, teríamos um arquivo com essa cara:
source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '9.0'
use_frameworks!
target 'ProjetoIOS' do
pod 'Alamofire', '~> 3.4'
end
Depois disso, com a lib já baixada (essa parte você pode olhar no link do CocoaPods), podemos usar o Alamofire no código!
Vamos supor que meu webservice esteja em http://webservice.com/ e responda assim:
GET => http://webservice.com/?aluno={id}
{"dadosDoAluno": {
"id": <id>,
"nome": "<nome>",
"idade": <idade>,
"telefone": "<telefone>"
}
}
Podemos fazer um ViewController que capture o nome a partir do id digitado num UITextField, da seguinte forma:
import UIKit
import Foundation
import Alamofire
class ViewControllerSwift : UIViewController {
@IBOutlet weak var campoResposta: UILabel!
@IBOutlet weak var campoId: UITextField!
let urlBase = "http://webservice.com";
@IBAction func capturaNome() {
let idDoAluno:String = campoId.text!;
Alamofire.request(.GET, urlBase, parameters: ["aluno": idDoAluno])
.responseJSON { response in
let JSON = response.result.value as! NSDictionary;
let nome = JSON.valueForKey("dadosDoAluno")!.valueForKey("nome")!.description;
self.campoResposta.text = nome;
}
}
}
Abraço!
Bom dia Felipe,
Fiz o que você me pediu e ele esta retornando o seguinte erro:
2016-06-28 10:14:37.808 teste[1284:44510] App Transport Security has blocked a cleartext HTTP (http://) resource load since it is insecure. Temporary exceptions can be configured via your app's Info.plist file. fatal error: unexpectedly found nil while unwrapping an Optional value
Estou tentando achar algo sobre isso, se poder me ajudar agradeço.
Bom dia Felipe,
Consegui resolver com este post.
http://timdietrich.me/blog/swift-enabling-http-connections-with-ats/
Obrigado.