Est-il possible d'utiliser le SDK iPhone pour obtenir les mêmes résultats que les méthodes HTTP POST ou GET?Puis-je faire des requêtes POST ou GET à partir d'une application iphone?
26
A
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]];
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
Assurez-vous de vérifier que [[NSURLConnection alloc] initWithRequest: request delegate: self]; appelez pour un retour nul. – Erik