iOS学習ノート-----AFNetworkingの使用
12193 ワード
1.GET要求
(1)一般POST要求
NSString *urlString = @"http://piao.163.com/m/cinema/list.html?app_id=1&mobileType=iPhone&ver=2.6&channel=appstore&deviceId=9E89CB6D-A62F-438C-8010-19278D46A8A6&apiVer=6&city=110000";
//------------------------ AF Get ------------------------
// manager
AFHTTPSessionManager *manger = [AFHTTPSessionManager manager];
//
//
//AFHTTPRequestSerializer key1=value1&key2=value2
//AFJSONRequestSerializer Json
//[AFJSONRequestSerializer serializerWithWritingOptions:NSJSONWritingPrettyPrinted];
manger.requestSerializer = [AFHTTPRequestSerializer serializer];
//
//AFHTTPResponseSerializer
//AFJSONResponseSerializer Json
//AFXMLParserResponseSerializer XML
manger.responseSerializer = [AFJSONResponseSerializer serializerWithReadingOptions:NSJSONReadingMutableLeaves];
//
[manger GET:urlString
parameters:nil
progress:^(NSProgress * _Nonnull downloadProgress) {
NSLog(@"%lli/%lli", downloadProgress.completedUnitCount, downloadProgress.totalUnitCount);
}
success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
NSLog(@" ");
NSLog(@"responseObject%@", responseObject);
}
failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
NSLog(@" ");
}];
2.POSTリクエスト(1)一般POST要求
// manager
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
NSString *urlString = @"http://piao.163.com/m/cinema/schedule.html?app_id=1&mobileType=iPhone&ver=2.6&channel=appstore&deviceId=9E89CB6D-A62F-438C-8010-19278D46A8A6&apiVer=6&city=110000";
NSDictionary *parameters = @{@"cinema_id" : @"1533"};
// POST
[manager POST:urlString
parameters:parameters
progress:nil
success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
NSLog(@" :%@", responseObject);
}
failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
NSLog(@" ");
}];
(2)微博インターフェース、multiipad/form-data POSTファイルアップロード //url token
NSString *urlString = @"https://upload.api.weibo.com/2/statuses/upload.json";
//
NSString *token = @"2.00hd363CtKpsnBedca9b3f35tBYiP";
//
NSDictionary *dic = @{@"access_token" : token, @"status" : @" ! "};
// manager POST
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
[manager POST:urlString
parameters:dic
constructingBodyWithBlock:^(id _Nonnull formData) {
//
//
UIImage *image = [UIImage imageNamed:@"1.jpg"];
NSData *data = UIImageJPEGRepresentation(image, 0.7);
// fromdata
[formData appendPartWithFileData:data name:@"pic" fileName:@"1.jpg" mimeType:@"image/jpeg"];
}
progress:^(NSProgress * _Nonnull downloadProgress) {
NSLog(@"%lli/%lli", downloadProgress.completedUnitCount, downloadProgress.totalUnitCount);
}
success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
NSLog(@" ");
}
failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
NSLog(@" ");
}];
3.ダウンロードタスク
//
NSString *urlString = @"http://218.76.27.57:8080/chinaschool_rs02/135275/153903/160861/160867/1370744550357.mp3";
// manager
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
//
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:urlString]];
//
NSURLSessionDownloadTask *downloadTask = [manager downloadTaskWithRequest:request progress:^(NSProgress * _Nonnull downloadProgress) {
NSLog(@"%lli/%lli", downloadProgress.completedUnitCount, downloadProgress.totalUnitCount);
} destination:^NSURL * _Nonnull(NSURL * _Nonnull targetPath, NSURLResponse * _Nonnull response) {
// ,
NSLog(@" :%li", ((NSHTTPURLResponse *)response).statusCode);
//targetPath
//
NSString *filePath = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents/ .mp3"];
NSLog(@"%@", filePath);
// ,
return [NSURL fileURLWithPath:filePath];
} completionHandler:^(NSURLResponse * _Nonnull response, NSURL * _Nullable filePath, NSError * _Nullable error) {
NSLog(@" ");
}];
[downloadTask resume];
// ,
[_progressView setProgressWithDownloadProgressOfTask:downloadTask animated:YES];
4.アップロードタスクmultiipad/form-data POSTファイルアップロード
NSString *urlString = @"https://api.weibo.com/2/statuses/upload.json";
NSString *token = @"2.00hd363CtKpsnBedca9b3f35tBYiP";
//
UIImage *image = _imageView.image;
NSString *text = _textField.text;
if (image == nil || text.length == 0) {
return;
}
//
NSDictionary *dic = @{@"access_token" : token,
@"status" : text};
//
AFHTTPRequestSerializer *serializer = [AFHTTPRequestSerializer serializer];
//
NSMutableURLRequest *request = [serializer multipartFormRequestWithMethod:@"POST" URLString:urlString parameters:dic constructingBodyWithBlock:^(id _Nonnull formData) {
//
NSData *imageData = UIImageJPEGRepresentation(image, 1);
[formData appendPartWithFileData:imageData name:@"pic" fileName:@"image.png" mimeType:@"image/png"];
} error:nil];
// manager
AFURLSessionManager *manager = [[AFURLSessionManager alloc] initWithSessionConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration]];
//
NSURLSessionUploadTask *uploadTask;
uploadTask = [manager uploadTaskWithStreamedRequest:request progress:^(NSProgress * _Nonnull uploadProgress) {
//
// [_progressView performSelectorOnMainThread:@selector(setProgress:) withObject:@(uploadProgress.fractionCompleted) waitUntilDone:YES];
dispatch_async(dispatch_get_main_queue(), ^{
//Update the progress view
[_progressView setProgress:uploadProgress.fractionCompleted];
});
} completionHandler:^(NSURLResponse * _Nonnull response, id _Nullable responseObject, NSError * _Nullable error) {
NSLog(@" , :%li", ((NSHTTPURLResponse *)response).statusCode);
}];
[uploadTask resume];