En aquest tema, aprendrem els conceptes fonamentals de les xarxes en el context de la programació en Objective-C. Ens centrarem en com les aplicacions poden comunicar-se amb altres serveis a través de la xarxa, incloent-hi la realització de sol·licituds HTTP i la manipulació de respostes.
Objectius d'Aprenentatge
- Comprendre els conceptes bàsics de les xarxes.
- Aprendre a realitzar sol·licituds HTTP en Objective-C.
- Manipular respostes de xarxa.
- Gestionar errors de xarxa.
Conceptes Clau
- Protocols de Xarxa
Els protocols de xarxa són regles que defineixen com es comuniquen els dispositius en una xarxa. Els més comuns són:
- HTTP/HTTPS: Utilitzats per a la comunicació web.
- FTP: Utilitzat per a la transferència de fitxers.
- TCP/IP: Protocols bàsics per a la comunicació a Internet.
- Sol·licituds HTTP
Les sol·licituds HTTP són missatges enviats per un client a un servidor per obtenir recursos. Els tipus més comuns de sol·licituds són:
- GET: Per obtenir dades.
- POST: Per enviar dades al servidor.
- PUT: Per actualitzar dades.
- DELETE: Per eliminar dades.
- Respostes HTTP
Les respostes HTTP són missatges enviats per un servidor en resposta a una sol·licitud HTTP. Contenen un codi d'estat que indica el resultat de la sol·licitud (per exemple, 200 OK, 404 Not Found).
Realització de Sol·licituds HTTP en Objective-C
Exemple Pràctic: Sol·licitud GET
A continuació, veurem com realitzar una sol·licitud GET en Objective-C utilitzant la classe NSURLSession
.
#import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @autoreleasepool { // URL de la sol·licitud NSURL *url = [NSURL URLWithString:@"https://jsonplaceholder.typicode.com/posts/1"]; // Creació de la sessió NSURLSession *session = [NSURLSession sharedSession]; // Creació de la tasca de sol·licitud NSURLSessionDataTask *dataTask = [session dataTaskWithURL:url completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) { if (error) { NSLog(@"Error: %@", error.localizedDescription); return; } // Manipulació de la resposta NSError *jsonError; NSDictionary *jsonResponse = [NSJSONSerialization JSONObjectWithData:data options:0 error:&jsonError]; if (jsonError) { NSLog(@"JSON Error: %@", jsonError.localizedDescription); return; } // Impressió de la resposta NSLog(@"Response: %@", jsonResponse); }]; // Inici de la tasca [dataTask resume]; // Mantenir el programa en execució per esperar la resposta [[NSRunLoop currentRunLoop] run]; } return 0; }
Explicació del Codi
- Creació de la URL: Es crea un objecte
NSURL
amb l'URL de la sol·licitud. - Creació de la Sessió: Es crea una sessió compartida utilitzant
NSURLSession
. - Creació de la Tasca de Sol·licitud: Es crea una tasca de sol·licitud amb
dataTaskWithURL:completionHandler:
. ElcompletionHandler
és un bloc que s'executa quan la sol·licitud es completa. - Gestió d'Errors: Si hi ha un error, es mostra un missatge d'error.
- Manipulació de la Resposta: La resposta es deserialitza de JSON a un diccionari de Objective-C.
- Inici de la Tasca: La tasca es comença amb
resume
. - Mantenir el Programa en Execució: Es manté el programa en execució per esperar la resposta de la xarxa.
Exercici Pràctic
Exercici 1: Sol·licitud POST
Crea una sol·licitud POST que enviï dades a un servidor i imprimeixi la resposta. Utilitza l'URL https://jsonplaceholder.typicode.com/posts
i envia les dades següents en format JSON:
Solució
#import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @autoreleasepool { // URL de la sol·licitud NSURL *url = [NSURL URLWithString:@"https://jsonplaceholder.typicode.com/posts"]; // Creació de la sol·licitud NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url]; [request setHTTPMethod:@"POST"]; // Dades a enviar NSDictionary *postData = @{@"title": @"foo", @"body": @"bar", @"userId": @1}; NSError *jsonError; NSData *jsonData = [NSJSONSerialization dataWithJSONObject:postData options:0 error:&jsonError]; if (jsonError) { NSLog(@"JSON Error: %@", jsonError.localizedDescription); return 1; } [request setHTTPBody:jsonData]; [request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"]; // Creació de la sessió NSURLSession *session = [NSURLSession sharedSession]; // Creació de la tasca de sol·licitud NSURLSessionDataTask *dataTask = [session dataTaskWithRequest:request completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) { if (error) { NSLog(@"Error: %@", error.localizedDescription); return; } // Manipulació de la resposta NSError *jsonError; NSDictionary *jsonResponse = [NSJSONSerialization JSONObjectWithData:data options:0 error:&jsonError]; if (jsonError) { NSLog(@"JSON Error: %@", jsonError.localizedDescription); return; } // Impressió de la resposta NSLog(@"Response: %@", jsonResponse); }]; // Inici de la tasca [dataTask resume]; // Mantenir el programa en execució per esperar la resposta [[NSRunLoop currentRunLoop] run]; } return 0; }
Resum
En aquest tema, hem après els conceptes bàsics de les xarxes i com realitzar sol·licituds HTTP en Objective-C. Hem vist com crear sol·licituds GET i POST, gestionar errors i manipular respostes. Aquests coneixements són fonamentals per desenvolupar aplicacions que necessiten comunicar-se amb serveis web.
En el següent tema, explorarem com treballar amb JSON i XML per processar dades de xarxa de manera més eficient.
Curs de Programació en Objective-C
Mòdul 1: Introducció a Objective-C
- Introducció a Objective-C
- Configuració de l'Entorn de Desenvolupament
- Sintaxi i Estructura Bàsiques
- Tipus de Dades i Variables
- Operadors i Expressions
Mòdul 2: Flux de Control
Mòdul 3: Funcions i Mètodes
- Definició i Crida de Funcions
- Paràmetres de Funció i Valors de Retorn
- Sintaxi de Mètodes en Objective-C
- Mètodes de Classe i d'Instància
Mòdul 4: Programació Orientada a Objectes
Mòdul 5: Gestió de Memòria
- Introducció a la Gestió de Memòria
- Comptatge Automàtic de Referències (ARC)
- Retenció i Alliberament Manual
- Millors Pràctiques de Gestió de Memòria
Mòdul 6: Temes Avançats
Mòdul 7: Treballant amb Dades
- Gestió d'Arxius
- Serialització i Deserialització
- Conceptes Bàsics de Xarxes
- Treballant amb JSON i XML
Mòdul 8: Desenvolupament d'Interfícies d'Usuari
- Introducció a UIKit
- Vistes i Controladors de Vista
- Disseny Automàtic
- Gestió de l'Entrada de l'Usuari