ceci est mon code dans la classe: Connection.h, et je crée un objet Connexion dans chaque classe où je veux appeler une nouvelle connexion pour obtenir des données (je ne sais pas alors si c'est la bonne façon de faire)
importation "Connection.h" importation "XMLParser.h"
@implementation Connexion @synthesize WebData, soapResults, XmlParser;
- (Connexion *) Init: (NSInteger *) methodNumber { [super init]; methodNum = numéro_méthode; retournez-vous; }
- (void) Connect: (NSString *) SoapMessage {
NSLog(soapMessage);
NSURL *url = [NSURL URLWithString:@"http://.....?WSDL"];
NSMutableURLRequest *theRequest = [NSMutableURLRequest requestWithURL:url];
NSString *msgLength = [NSString stringWithFormat:@"%d", [soapMessage length]];
[theRequest addValue: @"text/xml; charset=utf-8" forHTTPHeaderField:@"Content-Type"];
[theRequest addValue: msgLength forHTTPHeaderField:@"Content-Length"];
[theRequest setHTTPMethod:@"POST"];
[theRequest setHTTPBody: [soapMessage dataUsingEncoding:NSUTF8StringEncoding]];
//NSURLConnection *theConnection = [NSURLConnection connectionWithRequest:theRequest delegate:self];
NSURLConnection *theConnection = [[NSURLConnection alloc] initWithRequest:theRequest delegate:self];
[theConnection start];
if(theConnection)
{
webData = [[NSMutableData data] retain];
}
else
{
NSLog(@"theConnection is NULL");
}
}
- (void) connexion: connexion (NSURLConnection *) didReceiveResponse: réponse (NSURLResponse *) { [webData setLength: 0]; }
- connexion (void): connexion (NSURLConnection *) didReceiveData: (*) NSData données { [WebData appendData: données]; }
- connexion (void): connexion (NSURLConnection *) didFailWithError: (NSError *) Erreur { NSLog (@ "erreur avec theConenction"); [libération de connexion]; [version webData]; }
- (void) connectionDidFinishLoading: (NSURLConnection *) connexion {
NSLog (@ "DONE.Reçu Octets% d », [longueur de Webdata]);
NSString * theXML = [[NSString alloc] initWithBytes: [Webdata mutableBytes] Longueur: [longueur de Webdata] codage: NSUTF8StringEncoding];
NSLog(theXML);
[theXML release];
if(xmlParser)
{
[xmlParser release];
}
xmlParser = [[NSXMLParser alloc] initWithData: webData];
//Initialize the delegate.
XMLParser *parser = [[XMLParser alloc] initXMLParser:methodNum];
//Set delegate
[xmlParser setDelegate:parser];
//[xmlParser setDelegate: self];
[xmlParser setShouldResolveExternalEntities: YES];
[xmlParser parse];
[connection release];
[webData release];
?}
@end
pouvez-vous me montrer avec un exemple s'il vous plaît, je ne sais pas bien comment créer un délégué –
Le code affiché dans votre réponse semble bon -. maintenant tout ce que vous avez à faire est de donner la classe Connection une instance de votre contrôleur de vue, qui devrait '@syn Thesize' le fileur. Ensuite, juste avant d'appeler '[theConnection start]', démarrez votre spinner, et dans 'connectionDidFinishLoading:', arrêtez-le à nouveau. – Tim
Comment créer l'instance? devrais-je créer dans Connection.h un objet 'view controller' ?? –