iPhone SDK: How to send data to a server over the

2019-06-03 14:58发布

i wrote a gps-application for the iphone and it all works fine but now i want to send the latitude and longitude to a server over the internet using the most simple way... I have a url from the server in which there are parameters for latitude and longitude. Also i want the lat. and long. to be sent every 90 seconds or so. How exactly is all of this done? Any help is much appreciated, thanks in advance!

2条回答
疯言疯语
2楼-- · 2019-06-03 15:14
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];

handle errors and received data using:

- (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
{
}

you need some variables set up, such as data, contentLength etc. But this is the general outline for http interaction.

You may want to put all handling stuff in a separate handler class, I changed the delegate to self so this is more self-contained.

As for timing, use an NSTimer to invoke posting the data every 90 seconds:

[NSTimer scheduledTimerWithTimeInterval:90 target:self selector:@selector(xmitCoords) userInfo:nil repeats:YES];
查看更多
SAY GOODBYE
3楼-- · 2019-06-03 15:26

I think the above answer has the right idea - but try using ASIHTTPRequest. A great library, and it abstracts all that messy HTTP code out of your program.

Also one other thing to note - GPS coordinates every 90 seconds is going to burn down your battery very fast - are you just doing this for testing?

查看更多
登录 后发表回答