• Programmazione Android
  • CORSI ONLINE
  • Web Agency

Logo

Corsi di programmazione web e mobile online
Navigation
  • Home
  • CORSI ONLINE
  • Tutorial Pratici
  • GUIDE COMPLETE
    • Corso completo di C
    • Corso videogame con Cocos2d
    • Programmazione Cocoa Touch
  • Sezioni
    • Libri e manuali
    • Tips & Tricks
    • Risorse utili
    • Strumenti di Sviluppo
    • Materiale OpenSource
    • Framework
    • Guide Teoriche
    • Guide varie
    • Grafica e Design
    • iPad
    • News
    • Video Tutorial
    • Windows Phone
  • Pubblicità
  • About
    • Chi siamo
    • Pubblicazioni
    • Collabora
    • Sostieni devAPP

ASIHTTPRequest: creare richieste HTTP e interagire con webService REST dalle nostre applicazioni iPhone e iPad

By Andrea Cappellotto | on 21 Aprile 2011 | 8 Comments
Risorse utili

Ciao Ragazzi, oggi vi volevo parlare di una libreria molto interessante: ASIHTTPRequest! A cosa serve? ASIHTTPRequest ci permetterà in modo davvero semplice di comunicare con un web service e, in particolare, potremo creare richieste HTTP e interagire con servizi REST (GET, POST, PUT, DELETE). Credo che questa che sto per presentarvi sia la libreria più completa e, non meno importante, piu semplice, da utilizzare durante lo sviluppo delle nostre applicazioni iPhone e iPad.

Preparare un progetto per l’uso di ASIHTTPRequest

Prima cosa, dovremo scaricare questa libreria, per farlo possiamo passare attraverso questo link diretto.
Una volta ottenuta decomprimiamo il file appena scaricato, apriamo quindi il nostro progetto Xcode per iPhone ed entriamo nel gruppo “Classes”. A questo punto dobbiamo copiare tutti i file al suo interno (tranne le ultime 3 cartelle) e importateli nel progetto stesso (ricordiamoci di spuntare l’opzione che ci permetterà di copiare effettivamente i file all’interno del progetto).

Copiamo ancora i file Reachability, sempre all’interno del nostro progetto e concludiamo i preparativi importando infine i seguenti framework:

  • CFNetwork,
  • SystemConfiguration,
  • MobileCoreServices,
  • libz.1.2.3.dylib

Bene, ora tutto è pronto e non ci resta che utilizzare la risorsa che abbiamo appena scaricato e importato per realizzare le nostre richieste.

Come funziona ASIHTTP?

Vediamo qualche esempio di codice per capire come usare ASIHTTPRequest nelle nostre app. Supponiamo di dover creare una richiesta in POST in cui allegheremo delle stringhe e dei file.

Innanzitutto importiamo:

#import "ASIFormDataRequest.h"

Quindi, così, creiamo la nostra richiesta:

ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:[NSURL URLWithString:urlString]];
    [request setPostValue:mail forKey:@"usermail"];
    [request setPostValue:idVersione forKey:@"versionid"];
    [request setFile:path forKey:@"userfile"];
    #if __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_4_0
	[request setShouldContinueWhenAppEntersBackground:YES];
    #endif
	[request setDelegate:self];
	[request setDidFailSelector:@selector(uploadFailed:)];
	[request setDidFinishSelector:@selector(uploadFinished:)];
    [request startSynchronous];

Vediamo cosa abbiamo fatto. Semplicemente, nella prima riga inizializziamo la request inserendo in urlString l’indirizzo a cui inviare la richiesta, poi aggiungiamo i valori, mail per “usermail”, idVersione per “versionid” e in fine alleghiamo un file dandogli il path e la chiave (naturalmente i paramentri andranno settati secondo le proprie richieste ed esigenze).

Se l’iOS installato è maggiore o uguale alla 4.0 allora il background è supportato, quindi facciamo sì che l’app entri in background continuando ad inviare la richiesta, impostiamo quindi il Delegate e infine settiamo i due metodi utili quando o l’upload fallisce oppure termina semplicemente.

Vediamo ora il codice di implementazione dei due metodi appena citati:

- (void)uploadFailed:(ASIHTTPRequest *)theRequest
{
	//[resultView setText:[NSString stringWithFormat:@"Request failed:\r\n%@",[[theRequest error] localizedDescription]]];
    NSLog(@"Request failed:\r\n%@",[[theRequest error] localizedDescription]);
    
    UIAlertView * alert = [[UIAlertView alloc] initWithTitle:@"Error" 
                                           message: [[theRequest error] localizedDescription]
                                          delegate:nil cancelButtonTitle:@"Ok" 
                                 otherButtonTitles:nil];
    
;
; } - (void)uploadFinished:(ASIHTTPRequest *)theRequest { //[resultView setText:[NSString stringWithFormat:@"Finished uploading %llu bytes of data",[theRequest postLength]]]; NSLog(@"Finished uploading %llu bytes of data",[theRequest postLength]); }

Come vedete, niente di particolare.
Cosi facendo abbiamo creato, con poche righe di codice, una request in POST.

Conclusioni

Naturalmente ASIHTTPRequest offre molte più possibilità di quanto mostrato, come per esempio potremmo ottenere il progresso dell’upload o download di un file o ancora la potremo creare form di login o sfruttare https. Insomma, questa è solo una piccola guida introduttiva a questa interessante ed utilissima libreria, per ulteriori dettagli vi rimando a questo indirizzo, in cui troverete la più completa documentazione a riguardo (in inglese) che ho trovato fino ad ora navigando in giro per il web.

Buon lavoro e alla prossima, magari con qualche bel tutorial più completo!
Andrea

Share this story:
  • tweet

Tags: Andrea CappellottoASIHTTPGuide varieiphone e webservice restMateriale OpenSourcerichieste get iphonerichieste http iphonerichieste post iphone ipadStrumenti di Sviluppo

Recent Posts

  • Parte il percorso programmatori iOS in Swift su devACADEMY.it

    20 Dicembre 2017 - 0 Comment
  • Android, crittografare dati velocemente con Encryption

    24 Settembre 2018 - 0 Comment
  • Sql2o, accesso immediato ai database tramite Java

    3 Settembre 2018 - 0 Comment
  • Okio, libreria per ottimizzare l’input/output in Java

    27 Agosto 2018 - 0 Comment

Related Posts

  • T#100 – Integrare Dropbox nelle applicazioni iPhone ed iPad

    9 Settembre 2011 - 11 Comments
  • T#099 – Scopriamo la property TAG e impariamo ad usarla durante lo sviluppo di Applicazioni iOS

    1 Agosto 2011 - 4 Comments
  • Unisciti al nostro team di sviluppo per creare oggetti da rilasciare sotto licenza open

    17 Luglio 2011 - 2 Comments

Author Description

Perito Elettrotecnico e studente di Scienze Informatiche presso l'università di Trento. Da inizio 2010 , dopo aver lavorato come sistemista-tecnico informatico, si occupa di programmazione in ambito iOS, collabora con un'azienda trentina nello sviluppo di applicazioni iOS per il turismo e realizza soluzioni personalizzate per aziende. Tra gli ultimi progetti ricordiamo l'integrazione tra iOS e Arduino segno che l'open source può benissimo lavorare con sistemi più chiusi come i device Apple! Per devAPP scrive tutorial sulla programmazione, da cosigli su strumenti da utilizzare per semplificare la programmazione, è inoltre moderatore del forum con all'attivo quasi mille post e partecipazioni giornaliere.

8 Responses to “ASIHTTPRequest: creare richieste HTTP e interagire con webService REST dalle nostre applicazioni iPhone e iPad”

  1. 19 Maggio 2011

    Tommaso

    ciao, come potrei fare una schermata di login?

  2. 29 Maggio 2011

    gigio

    @Tommaso :quoto

  3. 26 Ottobre 2011

    giovanni

    purtroppo non funziona più la libreria 🙁 è incompatibile con ARC

  4. 26 Ottobre 2011

    Andrea Cappellotto

    forse non funziona più per via della nuova LLVM non di sicuro perchè è incompatibile con ARC….;)

  5. 26 Ottobre 2011

    Andrea Cappellotto

    avevo confuso..:) hai ragione è incompatibile con ARC, però ti basta selezionare la vecchia LLVM e torna a funzionare… prima di passare al 4.2 ci conviene aspettare che vengano aggiornate le varie librerie….

  6. 26 Ottobre 2011

    Andrea Cappellotto

    questa è una buona alternativa!!
    https://github.com/gowalla/AFNetworking

  7. 2 Novembre 2011

    Francesco

    come si fà a selezionare la vecchia LLVM per farlo funzionare???


    Andrea Cappellotto:

    avevo confuso..:) hai ragione è incompatibile con ARC, però ti basta selezionare la vecchia LLVM e torna a funzionare… prima di passare al 4.2 ci conviene aspettare che vengano aggiornate le varie librerie….

  8. 7 Marzo 2012

    giovanni

    asihttprequest può essere usata anche per fare un upload di file presenti sull’iphone su un server remoto REST?
    non ho trovato nulla che mi dia conferma o smentita 🙁

    Per ARC ho trovato la soluzione, mettere il flag -fno-objc-arc ai file .m della classe di ASIhttprequest 🙂

Leave a Reply

Your email address will not be published. Required fields are marked *


*
*

Corso online di programmazione android e java

SEZIONI

  • Android
  • Comunicazioni
  • Contest
  • Corsi ed Eventi
  • Corso completo di C
  • Corso programmazione videogiochi
  • Framework
  • Grafica e Design
  • Guida rapida alla programmazione Cocoa Touch
  • Guide Teoriche
  • Guide varie
  • iPad
  • Le nostre applicazioni
  • Libri e manuali
  • Materiale OpenSource
  • News
  • Pillole di C++
  • Progetti completi
  • Risorse utili
  • Strumenti di Sviluppo
  • Swift
  • Tips & Tricks
  • Tutorial Pratici
  • Video Tutorial
  • Windows Phone

Siti Amici

  • Adrirobot
  • Allmobileworld
  • Apple Notizie
  • Apple Tribù
  • Avvocato360
  • Blog informatico 360°
  • bubi devs
  • fotogriPhone
  • GiovaTech
  • iApp-Mac
  • iOS Developer Program
  • iPodMania
  • MelaRumors
  • Meritocracy
  • SoloTablet
  • TecnoUser
  • Privacy & Cookie Policy
©2009-2018 devAPP - All Rights Reserved | Contattaci
devAPP.it è un progetto di DEVAPP S.R.L. - Web & Mobile Agency di Torino
Str. Volpiano, 54 - 10040 Leini (TO) - C.F. e P.IVA 11263180017 - REA TO1199665 - Cap. Soc. € 10.000,00 i.v.

devACADEMY.it

Vuoi imparare a programmare?

Iscriviti e accedi a TUTTI i corsi con un’unica iscrizione.
Oltre 70 corsi e migliaia di videolezioni online e in italiano a tua disposizione.

ISCRIVITI SUBITO