views:

52

answers:

2

Hey guys,

I would like to create an app for iPhone which should be able to connect to a server and download an xml file. The file should be freshly generated from a database every time it is requested.

As an example, imagine an app that recommends books to the user, where the recommendations are generated by the server upon each request.
At first, no information will be transmitted from the app to the server. The app requests always the same file which will be generated with more or less random content. In a later step, I'd like to transmit login information to be able to answer the requests individually, but this is not the top priority.

To keep things simple, I'd like to rely on "common" infrastructure, like a simple webserver running php. The app targets a niche and I'm not expecting heavy loads.

How would you implement such a feature? How would you handle creating the request within the app / connecting to the server and the delivery of the xml file? Can this be done using php on the serverside or would this require something more specialized?

Thanks alot!!

A: 

Look into SOAP and PHP's SoapServer class.

stillstanding
Thanks for your answer! I was looking for something more basic, though.. I solved my problem as described in my answer. But I'll keep your recommendation in mind for future projects :)
Toastor
A: 

OK I found a simple solution myself (with a little help from a php-pro).

First I'd let my app request a php file (with the number of items I wish to receive as argument) like this:

NSString *sourcePath = [NSString stringWithFormat:@"http://www.foobar.com/db_getxml.php?%i", numberOfItems];

NSURLRequest *newRequest = [NSURLRequest requestWithURL:[NSURL URLWithString:sourcePath]];

NSURLResponse *response;
NSData *loadResult = [NSURLConnection sendSynchronousRequest:newRequest returningResponse:&response error:NULL];

The php file will read the requested number of entries from a mysql database and then output xml data.

All I need to do is stuff the contents of loadResult into the xml parser - works perfectly.

Toastor
You shouldn’t use an synchronous request though. Blocking the main thread for network I/O is never a good idea, and especially not in an iPhone project.
Sven
You're right. This was the most simple approach to get things working, but I'll switch to asynchronous requests. Thanks for pointing this out!
Toastor