
常见的处理网络请求方式
(1)NSURLConnection/NSURLsession
(2)ASIHttPRequest 早期项目中比较常见, 由于作者不更新了
(3)AFNetworking 推荐使用, 项目中使用
(4)MKNetworkKit 试试
库文件拖入工程中, 包含头文件
#import "AFNetworking.h"
-(void)testGetRequest{
NSString *urlstring = @"http://www.baidu.com";
urlstring = @"http://m.weather.com.cn/data/101010100.html";
urlstring = @"http://mp.manzuo.com/china/beijing/home_2.xml";
//定义AFNetworking管理
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
//注意:默认数据是JSON,content-type也是JSON,responSEObject是解析字典和数组,不是产生错误Code=-1016
//解决:设置解析器为HTTP形式,下载回来是NSData
manager.responseSerializer = [AFCompoundResponseSerializer serializer];
[manager GET:urlstring parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) {
// responseObject重要参数,包含下载数据
// NSLog(@"o = %@",responseObject);
NSString *str = [[NSString alloc]initWithData:responseObject encoding:NSUTF8StringEncoding];
NSLog(@"str = %@",str);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"error = %@",error);
}];
}
testGetRequest
-(void)testPostRequest{
//POST接口:
//参数1:@"user" : @"quiet"
//参数2:@"passWord" : @"123"
NSString *urlString = @"http://quiet.local/testdir/login.php";
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
manager.responseSerializer = [AFCompoundResponseSerializer serializer];
//参数1:传入地址
//参数2:传入URL请求的参数,格式传入字典
[manager POST:urlString parameters:@{@"user": @"quiet",@"password" : @"123"} success:^(AFHTTPRequestOperation *operation, id responseObject) {
NSString *str = [[NSString alloc]initWithData:responseObject encoding:NSUTF8StringEncoding];
NSLog(@"str = %@",str);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"error = %@",error);
}];
}
testPostRequest
-(void)testUploadFile{
//POST上传的接口
NSString *urlString = @"http://quiet.local/uploadtest/pk.php";
//参数名:image : 参数值是图片
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
manager.responseSerializer = [AFCompoundResponseSerializer serializer];
[manager POST:urlString parameters:nil constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
NSString *path = [[NSBundle mainBundle]pathForResource:@"daji.jpg" ofType:nil];
[formData appendPartWithFileURL:[NSURL URLWithString:path] name:@"image" fileName:@"666.jpg" mimeType:@"image/jpeg" error:nil];
} success:^(AFHTTPRequestOperation *operation, id responseObject) {
NSString *str = [[NSString alloc]initWithData:responseObject encoding:NSUTF8StringEncoding];
NSLog(@"str = %@",str);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"error = %@",error);
}];
[manager POST:urlString parameters:nil constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
//实现:上传的数据附加到请求体中
//fileName:上传后的文件名
//mimeType:需要上网搜索mime,把相应的格式复制过来
NSString *path = [[NSBundle mainBundle]pathForResource:@"daji.jpg" ofType:nil];
[formData appendPartWithFileURL:[NSURL fileURLWithPath:path] name:@"image" fileName:@"666.jpg" mimeType:@"image/jpeg" error:nil];
} success:^(AFHTTPRequestOperation *operation, id responseObject) {
NSString *str = [[NSString alloc]initWithData:responseObject encoding:NSUTF8StringEncoding];
NSLog(@"str = %@",str);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"error = %@",error);
}];
}
testUploadFile
-(void)testDownloadFile{
NSString *urlString = @"http://imgcache.QQ.com/club/item/avatar/zip/7/i87/all.zip";
//创建会话管理对象(通过默认配置)
AFURLSessionManager *manager = [[AFURLSessionManager alloc]initWithSessionConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration]];
NSURLSessionDownloadTask *task = [manager downloadTaskWithRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:urlString]] progress:nil destination:^NSURL *(NSURL *targetPath, NSURLResponse *response) {
//返回文件保存的位置
NSString *path = [NSString stringWithFormat:@"%@/Documents/all.zip",NSHomeDirectory()];
NSLog(@"%@",NSHomeDirectory());
return [NSURL fileURLWithPath:path];
} completionHandler:^(NSURLResponse *response, NSURL *filePath, NSError *error) {
NSLog(@"下载完成");
}];
//启动任务
[task resume];
}
testDownloadFile
-(void)testMonitorNetworkStatus{
AFHTTPRequestOperationManager *manager = [[AFHTTPRequestOperationManager alloc]initWithBaseURL:[NSURL URLWithString:@"www.baidu.com"]];
[manager.reachabilityManager setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {
NSDictionary *dict = @{
@(AFNetworkReachabilityStatusUnknown): @"未知",
@(AFNetworkReachabilityStatusNotReachable): @"不可达",
@(AFNetworkReachabilityStatusReachableViaWWAN): @"GPRS",
@(AFNetworkReachabilityStatusReachableViaWiFi): @"Wifi",
};
NSLog(@"状态为 %@",dict[@(status)]);
}];
//开启状态监视
[manager.reachabilityManager startMonitoring];
}
testMonitorNetworkStatus
导入头文件
#import "UIKit+AFNetworking.h"
- (void)setImageWithURL:(NSURL *)url;
BAIDU_WISE_UID=wapp_1428385381699_466;
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
[manager.requestSerializer setValue:@"wapp_1428385381699_466" forHTTPHeaderField:@"BAIDU_WISE_UID"];