Chiamata HTTP

di il
5 risposte

Chiamata HTTP

Ciao ragazzi,
Qualcuno sa dirmi se é possibile fare una chiamata HTTP e come si fa? Mi interesserebbe chiamare una pagina PHP passando dei paramteri e leggere la risposta.

5 Risposte

  • Re: Chiamata HTTP

    Ciao Giove,
    per effettuare una chiamata HTTP (di tipo get) di usa il metodo stringWithContentsOfURL della classe NSString:
    
    NSString *result = [NSString stringWithContentsOfURL: url encoding: ...  ecc ];
    
  • Re: Chiamata HTTP

    Grazie per a dritta, ma non sono riuscito a farla funzionare. Mi incasino con le classi per gli ulr, hai un esempio funzionante?
  • Re: Chiamata HTTP

    Prova questo, dovrebbe funzionare:
    
        NSURL* url = [NSURL URLWithString:@"http://www.google.it"];
        
        NSError* error = nil;
        NSString* result = [NSString stringWithContentsOfURL:url encoding:NSISOLatin1StringEncoding error:&error];
        
        if (error){
            NSLog(@"Error = %@",[error description]);
        }
        NSLog(@"%@",result);
    
  • Re: Chiamata HTTP

    Ok funziona. E per fare una chiamata post?
  • Re: Chiamata HTTP

    Per le richieste post è un po' più complicato.
    Mi sono creato questa pagina php:
    
    <html>
    <body>
    <?php
    	$param1 =  @$_POST["param1"];
    	$param2 = @$_POST["param2"];
    	echo "$param1 $param2";
    ?>
    </body>
    </html>
    
    Per quanto riguarda il codice per iOS ho creato un Button, premendo il quale si esegue il metodo doReq.

    File .h
    
    #import <UIKit/UIKit.h>
    
    @interface ViewController : UIViewController <NSURLConnectionDataDelegate> //Bisogna importare questo protocollo per essere informati degli eventi che accadranno durante la richiesta
    
    - (IBAction)doReq:(id)sender;
    @end
    
    file .m (ho omesso i metodi autogenerati)
    
    - (IBAction)doReq:(id)sender
    {
       //Creo url
        NSURL* url = [NSURL URLWithString:@"http://localhost/prova.php"];
        
        //Creo richiesta
        NSMutableURLRequest* req = [NSMutableURLRequest requestWithURL:url];
        
        //Imposto metodo POST
        req.HTTPMethod = @"POST";
        
        //Creo la stringa di coppie parametro-valore
        NSString* param = [NSString stringWithFormat:@"param1=%@&param2=%@", @"value1",@"value2"];
        
        //Imposto il body della richiesta
        [req setHTTPBody:[param dataUsingEncoding:NSUTF8StringEncoding]];
        
        //Creo la richiesta
        NSURLConnection* conn = [NSURLConnection connectionWithRequest:req delegate:self];
        
        if (!conn) {
            NSLog(@"Errore");
        }
    }
    
    //Questo metodo verrà richiamato ogni volta che saranno ricevuti dei dati
    //Questo non significa che verrà richiamato quando avrà ricevuto TUTTI i dati
    - (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
    {
        responseBody = [responseBody stringByAppendingString:[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]];
    }
    
    // Verrà richiamato quando la richiesta sarà completata, ovvero quando avremo ricevuto tutti i dati
    - (void)connectionDidFinishLoading:(NSURLConnection *)connection
    {
        NSLog(@"%@",responseBody);
    }
    @end
    
    E questo è l'output del simulatore:
    
    2012-06-21 12:28:27.402 POST[902:f803] <html>
    <body>
    value1 value2</body>
    </html>
Devi accedere o registrarti per scrivere nel forum
5 risposte