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?
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.