Is there a way using the iPhone SDK to get the same results as an HTTP POST or GET methods?
+7
A:
If you're using Objective C, you'll need to use the NSURL, NSURLRequest, and NURLConnection classes. Apple's NSURLRequest doc. HttpRequest is for JavaScript.
Ben Gottlieb
2008-11-26 04:04:00
+22
A:
Assume your class has a responseData
instance variable, then:
responseData = [[NSMutableData data] retain];
NSURLRequest *request =
[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.domain.com/path"]];
[[NSURLConnection alloc] initWithRequest:request delegate:self];
And then add the following methods to your class:
- (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
}
This will send a GET. By the time the final method is called, responseData
will contain the entire HTTP response (convert to string with [[NSString alloc] initWithData:encoding:].
Alternately, for POST, replace the first block of code with:
NSMutableURLRequest *request =
[NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"http://www.domain.com/path"]];
[request setHTTPMethod:@"POST"];
NSString *postString = @"Some post string";
[request setHTTPBody:[postString dataUsingEncoding:NSUTF8StringEncoding]];
Matt Gallagher
2008-11-26 23:57:12
I posted a follow up question on this here: http://stackoverflow.com/questions/431826/making-get-and-post-requests-from-an-iphone-application-clarification-needed (I figured it was worthy of it's own question.)
Greg
2009-01-10 22:23:37