Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Consumir webservice ou web api

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?

3 respostas
solução!

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.