5 votes

iPhone - Connexion SSL

Quel est le meilleur point de départ pour apprendre à se connecter aux services web ssl par iphone ?

Jusqu'à présent, j'ai fait quelques connexions de base sur http via SOAP etc. mais je n'ai aucune expérience sur https. J'apprécierais toute bonne source, tout tutoriel, toute référence de départ, toute "utilisation de la classe nsurl...".

5voto

luvieere Points 19689

Connexion NSURLConnection fonctionne par défaut avec SSL et peut accéder aux sites https. Des problèmes peuvent apparaître concernant la confiance de l'utilisateur dans les certificats SSL, ici Il y a une discussion sur ce sujet que j'ai trouvé intéressante.

1voto

ahmet emrah Points 1638

Je poste un exemple de client https. Il ignore si le certificat du serveur n'est pas valide. le serveur a une méthode webget avec uritemplate=username({usercode})/password({passcode})

vous pouvez utiliser CharlesProxy pour vérifier votre message sortant

#import "Hello_SOAPViewController.h"
@interface NSURLRequest (withHttpsCertificates)
+ (BOOL)allowsAnyHTTPSCertificateForHost:(NSString*)host;
+ (void)setAllowsAnyHTTPSCertificate:(BOOL)allow forHost:(NSString*)host;
@end

@implementation Hello_SOAPViewController

NSMutableData *webData;

- (void)viewDidLoad {

//////////////////////////////////////////////////

//Web Service Call

//////////////////////////////////////////////////

    NSURL *url = [NSURL URLWithString:@"https://192.168.1.105/HelloService/Service.svc/username(user)/password(xxx)"];                           

    NSMutableURLRequest *theRequest = [NSMutableURLRequest requestWithURL:url cachePolicy:NSURLRequestReloadIgnoringCacheData timeoutInterval:60.0];
    [NSURLRequest setAllowsAnyHTTPSCertificate:YES forHost:[url host]];

    [theRequest addValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];       

    [theRequest setHTTPMethod:@"GET"];     
    NSURLConnection *theConnection = [[NSURLConnection alloc] initWithRequest:theRequest delegate:self];

    if(theConnection) {
        webData = [[NSMutableData data] retain];
    }
    else {
        NSLog(@"theConnection is NULL");
    }

}

-(void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
{
    [webData setLength: 0];
}
-(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
{
    [webData appendData:data];
}
-(void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
{

    NSLog(@"ERROR with theConnection:%@",[error description]);
    if ([error code] == -1001 ){//isEqualToString:@"timed out"]) {
        UIAlertView *alertView = [[[UIAlertView alloc] initWithTitle:@"Connection Error" message:@"Server Unresponsive"  delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil] autorelease];
        [alertView show];

    }else{
        UIAlertView *alertView = [[[UIAlertView alloc] initWithTitle:@"Connection Error" message:@"Check your internet connection "  delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil] autorelease];
        [alertView show];
    }

    [connection release];
    [webData release];
}
-(void)connectionDidFinishLoading:(NSURLConnection *)connection
{
    NSLog(@"DONE. Received Bytes: %d", [webData length]);

    ///////////////////////
    //Process Your Data here:

    ///////////////////////

    [connection release];
    [webData release];

}

- (void)didReceiveMemoryWarning {
    // Releases the view if it doesn't have a superview.
    [super didReceiveMemoryWarning];

    // Release any cached data, images, etc that aren't in use.
}

- (void)viewDidUnload {
    // Release any retained subviews of the main view.
    // e.g. self.myOutlet = nil;
}

- (void)dealloc {

    [super dealloc];
}

0voto

coneybeare Points 23802

Vérifiez ASIHTTPRequest . Il est très stable, non fuyant, facile à utiliser et comprend un grand nombre de fonctionnalités comme la reprise du téléchargement d'un fichier, le support de la barre de progression, etc Il supporte également l'authentification.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X