自从 iOS7之后,apple 推出NSURLSession
,并推荐开发者使用。所以基于NSURLConnection的请求只做简单了解就可以了
- 基于NSURLConnection- 简单的 HTTP 请求
- get 请求
// 1.创建网络管理者
// AFHTTPRequestOperationManager基于NSURLConnection
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
// 2.利用网络管理者发送get请求
/*
http://120.25.226.186:32812/login?username=520it&pwd=520it
第一个参数: 请求的地址 http://www.baidu.com
第二个参数: 请求的参数
第三个参数: 请求成功的回调
第四个参数: 请求失败的回调
只要利用AFN发送请求, 如果服务器返回的是JSON数据, 那么AFN会自动将JSON转会成OC对象返回给我们
*/
NSDictionary *parameters = @{
@"username":@"zhangsan",
@"pwd":@"zhangsan"
};
[manager GET:@"http://www.baidu.com" parameters:parameters success:^ void(AFHTTPRequestOperation * operation, id responseObject) {
NSLog(@"请求成功 %@", [responseObject class]);
} failure:^ void(AFHTTPRequestOperation * operation, NSError * error) {
NSLog(@"请求失败 %@", error);
}];
// 1.创建网络管理者
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
// 2.利用网络管理者发送post请求
NSDictionary *parameters = @{
@"username":@"zhangsan",
@"pwd":@"zhangsan"
};
[manager POST:@"http://www.baidu.com" parameters:parameters success:^ void(AFHTTPRequestOperation * operation, id responseObject) {
NSLog(@"请求成功 %@", [responseObject class]);
} failure:^ void(AFHTTPRequestOperation * operation, NSError * error) {
NSLog(@"请求失败 %@", error);
}];
// 1.创建网络管理者
// AFHTTPSessionManager 基于NSURLSession
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
// 2.利用网络管理者发送get请求
/*
__nullable 可以为nil/ null
__nonnull 代表不能为nil,null
*/
NSDictionary *parameters = @{
@"username":@"zhangsan",
@"pwd":@"zhangsan"
};
[manager GET:@"http://www.baidu.com" parameters:parameters success:^ void(NSURLSessionDataTask * task, id responseObject) {
NSLog(@"请求成功 %@", [responseObject class]);
} failure:^ void(NSURLSessionDataTask * operation, NSError * error) {
NSLog(@"请求失败 %@", error);
}];
// 1.创建网络管理者
// AFHTTPSessionManager 基于NSURLSession
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
// 2.利用网络管理者发送get请求
NSDictionary *parameters = @{
@"username":@"zhangsan",
@"pwd":@"zhangsan"
};
[manager POST:@"http://www.baidu.com" parameters:parameters success:^ void(NSURLSessionDataTask * task, id responseObject) {
NSLog(@"请求成功 %@", [responseObject class]);
} failure:^ void(NSURLSessionDataTask * operation, NSError * error) {
NSLog(@"请求失败 %@", error);
}];
-
注意: AFN 默认通过 JSON
来解析服务器返回的数据
- 通过设置序列化可以更改解析形式
- 一般有以下三种:
- [AFJSONResponseSerializer serializer]; //默认就是 json 解析,可以不用设置
- [AFHTTPResponseSerializer serializer];//直接使用服务器返回的数据,不做任何解析
- [AFXMLParserResponseSerializer serializer];//服务器返回 XML 数据,通过 XML 解析
manager.responseSerializer = [AFJSONResponseSerializer serializer];