Where to get ASIHTTPRequest:
- Github project page: http://github.com/pokeb/asi-http-request/tree
- Download the latest version: http://github.com/pokeb/asi-http-request/tarball/master
- License (BSD): http://github.com/pokeb/asi-http-request/tree/master/LICENSE
- Google Group: http://groups.google.com/group/asihttprequest
- Lighthouse bug base: http://allseeing-i.lighthouseapp.com/projects/27881/home
Need help?
Post your questions to the new Google Group, and I'll see what I can do.
What is ASIHTTPRequest?
ASIHTTPRequest is an easy to use wrapper around the CFNetwork API that makes some of the more tedious aspects of communicating with web servers easier. It is written in Objective-C and works in both Mac OS X and iPhone applications.
It is suitable performing basic HTTP requests and interacting with REST-based services (GET / POST / PUT / DELETE). The included ASIFormDataRequest subclass makes it easy to submit POST data and files using multipart/form-data.
It provides:
- A straightforward interface for submitting data to and fetching data from webservers
- Download data to memory or directly to a file on disk
- The ability to submit files on local drives as part of POST data, compatible with the HTML file input mechanism
- Easy access to request and response HTTP headers
- Progress delegates (NSProgressIndicators and UIProgressViews) to show information about download AND upload progress
- Auto-magic management of upload and download progress indicators for operation queues
- Basic, Digest and NTLM authentication support, credentials are automatically for the duration of a session, and can be stored for later in the Keychain.
- Cookie support
- GZIP support for response data AND request bodies
- Basic support for Amazon S3 - improved support coming soon!
- NEW Full support for Rackspace Cloud Files, contributed by Mike Mayo of Rackspace.
- Supports manual and auto-detected proxies, authenticating proxies, and PAC file auto-configuration. The built-in login dialog lets your iPhone application work transparently with authenticating proxies without any additional effort.
- Bandwidth throttling support
- Support for persistent connections
- Supports synchronous & asynchronous connections, requests can run in the main thread, or in an NSOperationQueue
- Comes with a broad range of unit tests
ASIHTTPRequest comes with a example applications for Mac and iPhone that demonstrate some of the features.
ASIHTTPRequest is partly based on code from Apple's ImageClient code samples, so if it doesn't meet your needs, take a look at their CFNetwork examples for more.
ASIHTTPRequest is compatible with Mac OS 10.5 or later, and iPhone OS 2.2.1 or later.
An overview of the classes
ASIHTTPRequest
Handles the basics of communicating with webservers, including downloading and uploading data, authentication, cookies and progress tracking.
ASIInputStream
A helper class used by ASIHTTPRequest when uploading data. You must include this class in your project to use ASIHTTPRequest.
ASIAuthenticationDialog
This class allows ASIHTTPRequest to present a login dialog when connecting to webservers that require authentication, and authenticating proxies. It is required in all projects targeting iPhone OS, though not for Mac OS projects.
Reachability
This class from Apple allows ASIHTTPRequest to be notified when the network connection changes from WWAN to WiFi, or vice-versa. You need to include this class in iPhone projects, but not in Mac projects.
As of v1.5, ASIHTTPRequest supports Reachability 2.0 (for apps targeting iPhone OS 3.x or later), as well as reachability 1.5 (for apps targeting 2.2.1). See the setup instructions for details on how to specify which version to use.
More information on the Reachability class is available here
ASIFormDataRequest
A subclass of ASIHTTPRequest that handles multipart/form-data posts. It makes POSTing data and files easy, but you do not need to add this to your project if you want to manage POST data yourself or don't need to POST data at all.
ASINetworkQueue
A subclass of NSOperationQueue that may be used to track progress across multiple requests. You don't need this if you only need to perform one request at a time, or prefer to track the progress of each request individually.
ASINSStringAdditions
A helper category for NSString that encodes and decodes the values of cookies. You don't need to include this in your own projects unless you need to read the url-decoded value of a cookie, or create cookies manually.
Support ASIHTTPRequest - buy Space Harvest - my new real-time strategy game for iPod Touch & iPhone!
