An NSURLRequest has a cache policy, which you can set to determine whether the request might be satisfied without freshly downloading previously downloaded data. An NSURLRequest to be handed to an NSURLConnection can specify the FTP, HTTP, or HTTPS scheme, including POST requests. An NSURLConnection can handle redirects and authentication. See the URL Loading System Programming Guide. You can also get as deep into the details of networking as you like; see in particular the CFNetwork Programming Guide.
Apple provides a generous amount of sample code. See in particular SimpleURLConnections, AdvancedURLConnections, SimpleNetworkStreams, SimpleFTPSample, and MVCNetworking.