J'ai écrit une application gps pour l'iphone et tout fonctionne bien mais maintenant je veux envoyer la latitude et la longitude à un serveur sur internet en utilisant la manière la plus simple... J'ai une url du serveur dans laquelle il y a des paramètres pour la latitude et la longitude. Je veux aussi que la latitude et la longitude soient envoyées toutes les 90 secondes environ. Comment tout cela se fait-il exactement ? Toute aide est très appréciée, merci d'avance !
Réponses
Trop de publicités?NSURL *cgiUrl = [NSURL URLWithString:@"http://yoursite.com/yourscript?yourargs=1"];
NSMutableURLRequest *postRequest = [NSMutableURLRequest requestWithURL:cgiUrl];
/* leave the rest out if just issuing a GET */
NSString *postBody = @"yourpostbodyargs=1";
NSString *contentType = @"application/x-www-form-urlencoded; charset=utf-8";
int contentLength = [postBody length];
[postRequest addValue:contentType forHTTPHeaderField:@"Content-Type"];
[postRequest addValue:[NSString stringWithFormat:@"%d",contentLength] forHTTPHeaderField:@"Content-Length"];
[postRequest setHTTPMethod:@"POST"];
[postRequest setHTTPBody:[postBody dataUsingEncoding:NSUTF8StringEncoding]];
/* until here - the line below issues the request */
NSURLConnection *conn = [NSURLConnection connectionWithRequest:postRequest delegate:self];
traiter les erreurs et les données reçues en utilisant :
- (void)connectionDidFinishLoading:(NSURLConnection *)connection
{
// data has the full response
}
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
{
contentLength = [response expectedContentLength];
}
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)newdata
{
[data appendData:newdata];
}
-(void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
{
}
vous devez configurer certaines variables, telles que data, contentLength, etc. Mais c'est le schéma général de l'interaction http.
Vous pouvez vouloir mettre toutes les manipulations dans une classe de gestionnaire séparée, j'ai changé le délégué en self
donc c'est plus autonome.
Pour ce qui est du timing, utilisez un NSTimer
pour invoquer l'enregistrement des données toutes les 90 secondes :
[NSTimer scheduledTimerWithTimeInterval:90 target:self selector:@selector(xmitCoords) userInfo:nil repeats:YES];
Je pense que la réponse ci-dessus a la bonne idée - mais essayez d'utiliser ASIHTTPRequest . Une excellente bibliothèque, qui permet d'abstraire tout ce code HTTP désordonné de votre programme.
Autre chose à noter : les coordonnées GPS toutes les 90 secondes vont épuiser votre batterie très rapidement - faites-vous cela uniquement à des fins de test ?