Estou me aproximando do desenvolvimento do iOS e gostaria de ter um dos meus primeiros aplicativos para executar uma solicitação HTTP POST.
Tanto quanto posso entender, eu devo gerenciar a conexão que lida com a solicitação por meio de um NSURLConnection
objeto, o que me obriga a ter um objeto delegado, que por sua vez lida com eventos de dados.
Alguém poderia esclarecer a tarefa com um exemplo prático?
Devo entrar em contato com um endpoint https enviando dados de autenticação (nome de usuário e senha) e recebendo uma resposta em texto sem formatação.
fonte
didReceiveAuthenticationChallenge
. Existem problemas de segurança com senhas / nomes de usuários codificados? Existe alguma maneira de contornar isso?EDIT: ASIHTTPRequest foi abandonado pelo desenvolvedor. Ainda é realmente bom IMO, mas você provavelmente deve procurar outro lugar agora.
Eu recomendo usar a biblioteca ASIHTTPRequest se você estiver manipulando HTTPS. Mesmo sem o https, ele fornece um invólucro muito bom para coisas como essa e, embora não seja difícil fazer você mesmo com http simples, acho que a biblioteca é boa e uma ótima maneira de começar.
As complicações do HTTPS estão longe de serem triviais em vários cenários e, se você quiser ser robusto ao lidar com todas as variações, encontrará na biblioteca ASI uma ajuda real.
fonte
Eu pensei em atualizar este post um pouco e dizer que muita comunidade iOS mudou para a AFNetworking depois que
ASIHTTPRequest
foi abandonada. Eu recomendo. É um ótimo invólucroNSURLConnection
e permite chamadas assíncronas e basicamente qualquer coisa que você possa precisar.fonte
Aqui está uma resposta atualizada para iOS7 +. Ele usa NSURLSession, o novo hotness. Isenção de responsabilidade, este não foi testado e foi escrito em um campo de texto:
Ou melhor ainda, use o AFNetworking 2.0+. Normalmente, eu subclasse AFHTTPSessionManager, mas estou colocando tudo isso em um único método para ter um exemplo conciso.
Se você estiver usando o serializador de resposta JSON, o responseObject será objeto da resposta JSON (geralmente NSDictionary ou NSArray).
fonte
NOTA: Exemplo do Pure Swift 3 (Xcode 8): Experimente o seguinte código de exemplo. É o exemplo simples de
dataTask
função deURLSession
.fonte
Xcode 8 e Swift 3.0
Usando URLSession:
Chamada de delegado do URLSession:
Usando o bloco GET / POST / PUT / DELETE:
Trabalhando bem para mim .. tente 100% garantia de resultado
fonte
Veja como a solicitação HTTP POST funciona para iOS 8 ou superior usando NSURLSession:
Espero que isso satisfaça os seguintes requisitos.
fonte