2008-11-26 4 views

Répondre

8

Si vous utilisez Objective C, vous devez utiliser les classes NSURL, NSURLRequest et NURLConnection. Apple's NSURLRequest doc. HttpRequest est pour JavaScript.

45

Supposons que votre classe a une variable d'instance responseData, puis:

responseData = [[NSMutableData data] retain]; 

NSURLRequest *request = 
    [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.domain.com/path"]]; 
[[NSURLConnection alloc] initWithRequest:request delegate:self]; 

puis ajoutez les méthodes suivantes à votre classe:

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response 
{ 
    [responseData setLength:0]; 
} 

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data 
{ 
    [responseData appendData:data]; 
} 

- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error 
{ 
    // Show error 
} 

- (void)connectionDidFinishLoading:(NSURLConnection *)connection 
{ 
    // Once this method is invoked, "responseData" contains the complete result 
} 

Cela envoie un GET. Au moment où la dernière méthode est appelée, responseData contiendra la totalité de la réponse HTTP (convertir en chaîne avec [[NSString alloc] initWithData: codage:].

En variante, pour POST, remplacer le premier bloc de code avec:

NSMutableURLRequest *request = 
     [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"http://www.domain.com/path"]]; 
[request setHTTPMethod:@"POST"]; 

NSString *postString = @"Some post string"; 
[request setHTTPBody:[postString dataUsingEncoding:NSUTF8StringEncoding]]; 
+1

J'ai posté une question de suivi à ce sujet ici: http://stackoverflow.com/questions/431826/making-get-and-post-requests-from-an-iphone-application-clarification-needed (I Il a fallu vérifier sa propre question.) – Greg

+0

Assurez-vous de vérifier que [[NSURLConnection alloc] initWithRequest: request delegate: self]; appelez pour un retour nul. – Erik