GithubHelp home page GithubHelp logo

farooqmulla / afnetworking Goto Github PK

View Code? Open in Web Editor NEW

This project forked from afnetworking/afnetworking

1.0 2.0 0.0 1.6 MB

A delightful iOS and OS X networking framework

Home Page: http://afnetworking.org/Documentation/

License: MIT License

afnetworking's Introduction

AFNetworking

AFNetworking is a delightful networking library for iOS and Mac OS X. It's built on top of NSURLConnection, NSOperation, and other familiar Foundation technologies. It has a modular architecture with well-designed, feature-rich APIs that are a joy to use. For example, here's how easy it is to get JSON from a URL:

NSURL *url = [NSURL URLWithString:@"http://api.twitter.com/1/statuses/public_timeline.json"];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
AFJSONRequestOperation *operation = [AFJSONRequestOperation JSONRequestOperationWithRequest:request success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) {
    NSLog(@"Public Timeline: %@", JSON);
} failure:nil];
[operation start];

Perhaps the most important feature of all, however, is the amazing community of developers who use and contribute to AFNetworking every day. AFNetworking powers some of the most popular and critically-acclaimed apps on the iPhone, iPad, and Mac.

Choose AFNetworking for your next project, or migrate over your existing projects—you'll be happy you did!

How To Get Started

Overview

AFNetworking is architected to be as small and modular as possible, in order to make it simple to use and extend.

Core
AFURLConnectionOperation An NSOperation that implements the NSURLConnection delegate methods.
HTTP Requests
AFHTTPRequestOperation A subclass of AFURLConnectionOperation for requests using the HTTP or HTTPS protocols. It encapsulates the concept of acceptable status codes and content types, which determine the success or failure of a request.
AFJSONRequestOperation A subclass of AFHTTPRequestOperation for downloading and working with JSON response data.
AFXMLRequestOperation A subclass of AFHTTPRequestOperation for downloading and working with XML response data.
AFPropertyListRequestOperation A subclass of AFHTTPRequestOperation for downloading and deserializing objects with property list response data.
HTTP Client
AFHTTPClient Captures the common patterns of communicating with an web application over HTTP, including:
  <ul>
    <li>Making requests from relative paths of a base URL</li>
    <li>Setting HTTP headers to be added automatically to requests</li>
    <li>Authenticating requests with HTTP Basic credentials or an OAuth token</li>
    <li>Managing an <tt>NSOperationQueue</tt> for requests made by the client</li>
    <li>Generating query strings or HTTP bodies from an <tt>NSDictionary</tt></li>
    <li>Constructing multipart form requests</li>
    <li>Automatically parsing HTTP response data into its corresponding object representation</li>
    <li>Monitoring and responding to changes in network reachability</li>
  </ul>
</td>
Images
AFImageRequestOperation A subclass of AFHTTPRequestOperation for downloading an processing images.
UIImageView+AFNetworking Adds methods to `UIImageView` for loading remote images asynchronously from a URL.

Example Usage

XML Request

NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://api.flickr.com/services/rest/?method=flickr.groups.browse&api_key=b6300e17ad3c506e706cb0072175d047&cat_id=34427469792%40N01&format=rest"]];
AFXMLRequestOperation *operation = [AFXMLRequestOperation XMLParserRequestOperationWithRequest:request success:^(NSURLRequest *request, NSHTTPURLResponse *response, NSXMLParser *XMLParser) {
  XMLParser.delegate = self;
  [XMLParser parse];
} failure:nil];
[operation start];

Image Request

UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, 100.0f, 100.0f)];
[imageView setImageWithURL:[NSURL URLWithString:@"http://i.imgur.com/r4uwx.jpg"] placeholderImage:[UIImage imageNamed:@"placeholder-avatar"]];

API Client Request

// AFGowallaAPIClient is a subclass of AFHTTPClient, which defines the base URL and default HTTP headers for NSURLRequests it creates
[[AFGowallaAPIClient sharedClient] getPath:@"/spots/9223" parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) {
    NSLog(@"Name: %@", [responseObject valueForKeyPath:@"name"]);
    NSLog(@"Address: %@", [responseObject valueForKeyPath:@"address.street_address"]);
} failure:nil];

File Upload with Progress Callback

NSURL *url = [NSURL URLWithString:@"http://api-base-url.com"];
AFHTTPClient *httpClient = [[AFHTTPClient alloc] initWithBaseURL:url];
NSData *imageData = UIImageJPEGRepresentation([UIImage imageNamed:@"avatar.jpg"], 0.5);
NSMutableURLRequest *request = [httpClient multipartFormRequestWithMethod:@"POST" path:@"/upload" parameters:nil constructingBodyWithBlock: ^(id <AFMultipartFormData>formData) {
    [formData appendPartWithFileData:imageData name:@"avatar" fileName:@"avatar.jpg" mimeType:@"image/jpeg"];
}];

AFHTTPRequestOperation *operation = [[[AFHTTPRequestOperation alloc] initWithRequest:request] autorelease];
[operation setUploadProgressBlock:^(NSInteger bytesWritten, NSInteger totalBytesWritten, NSInteger totalBytesExpectedToWrite) {
    NSLog(@"Sent %d of %d bytes", totalBytesWritten, totalBytesExpectedToWrite);
}];
[operation start];

Streaming Request

NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://localhost:8080/encode"]];

AFHTTPRequestOperation *operation = [[[AFHTTPRequestOperation alloc] initWithRequest:request] autorelease];
operation.inputStream = [NSInputStream inputStreamWithFileAtPath:[[NSBundle mainBundle] pathForResource:@"large-image" ofType:@"tiff"]];
operation.outputStream = [NSOutputStream outputStreamToMemory];
[operation start];

Requirements

AFNetworking requires either iOS 4.0 and above, or Mac OS 10.6 (64-bit with modern Cocoa runtime) and above.

AFNetworking uses NSJSONSerialization if it is available. If your app targets a platform where this class is not available you can include one of the following JSON libraries to your project for AFNetworking to automatically detect and use.

ARC Support

AFNetworking will transition its codebase to ARC in a future release.

If you are including AFNetworking in a project that uses Automatic Reference Counting (ARC) enabled, you will need to set the -fno-objc-arc compiler flag on all of the AFNetworking source files. To do this in Xcode, go to your active target and select the "Build Phases" tab. Now select all AFNetworking source files, press Enter, insert -fno-objc-arc and then "Done" to disable ARC for AFNetworking.

Credits

AFNetworking was created by Scott Raymond and Mattt Thompson in the development of Gowalla for iPhone.

TTTLocationFormatter, used in the example project, is part of FormatterKit, created by Mattt Thompson.

AFNetworking's logo was designed by Alan Defibaugh.

And most of all, thanks to AFNetworking's growing list of contributors.

Contact

Mattt Thompson

Scott Raymond

License

AFNetworking is available under the MIT license. See the LICENSE file for more info.

afnetworking's People

Contributors

mattt avatar steipete avatar kcharwood avatar kirsplatrick avatar jparise avatar kgn avatar dstnbrkr avatar mhausherr avatar mgp avatar aaronbrethorst avatar cbess avatar erikolsson avatar jakemarsh avatar larrylegend avatar myell0w avatar soffes avatar teeman avatar aquageek avatar adamjernst avatar alanzeino avatar zole avatar bdmac avatar dickbrouwer avatar evanlong avatar flambert avatar jfrye avatar jagill avatar bogardon avatar koke avatar maicki avatar

Stargazers

Farooq Mulla avatar

Watchers

James Cloos avatar Farooq Mulla avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.