View Full Version : launching mobile safari with a POST request

Aug 21, 2008, 10:52 AM
was anybody successful in creating a POST request to be submitted to mobile safari? i feel like i'm doing the right thing, yet the server receives a GET instead of a POST.

#define BASE_URL @"http://m.someserver.com"

// create url object
NSString *urlString; NSURL *url;
urlString = [NSString stringWithFormat: @"%@/showpost.php", BASE_URL];
url = [NSURL URLWithString: urlString];

// create the request
NSMutableURLRequest *postRq = [NSMutableURLRequest requestWithURL: url];
[postRq setHTTPMethod: @"POST"];
NSLog(@"method: %@", [postRq HTTPMethod]);

// call safari with the url thus built
[[UIApplication sharedApplication] openURL: url];

my showpost.php test page is set to display the request method, the headers, and all this background stuff. it shows as it received a GET. i unsuccessfully tried adding data to the request body, forcing the content-type header to look like the request comes in from an html form, and PUT for the sake of it. do POST requests at least work with NSURLConnections, in your experience?

thanks everybody.

Aug 21, 2008, 11:30 AM
I don't think it's possible to send a post request to Safari. If you need that you'd need to use UIWebView or NSURLConnection in your own app.

Luke Redpath
Aug 22, 2008, 08:50 AM
Yes, it doesn't make much sense to send somebody to Safari using a POST - they should be GETting something. If you just need to submit data to a server, create a POST request inside of your app as suggested above.

Aug 27, 2008, 05:02 PM
well, adding a web view was pretty straightforward. now the delicate part is that every link in the web view will also open in the web view. at one point i need to get out of my app and use safari. anybody knows how to do that? i guess hunting for <a href=...> tags in the response, but how can you get the response?... hmm.

Aug 27, 2008, 06:41 PM
See this thread: http://forums.macrumors.com/showthread.php?p=5950268

Aug 27, 2008, 11:36 PM
whoa. good idea. thanks. :cool: