iOSネットワーク要求
5486 ワード
1.NSData
NSDataはGET要求に相当する。
1>GETパラメータをurlに綴り合わせる
3.NSURLSession
使用方法はsessionオブジェクトを取得するために、sessionを使用して要求タスクを作成し、タスクを開始すればいいです。要求タスク:NSURLSessitionTaskは、URLセッションにおけるタスクのベースクラスであり、通常は直接使用せず、主にサブクラス1>簡単なhttp要求を使用する。
4.AFNetWorking
AFNetWorkingは、NSURLConnectionとNSURLSessionをパッケージ化したフレーム1>GETです。
NSDataはGET要求に相当する。
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
NSString *urlStrig = @"http://ip:port?name= &pwd=123";
urlStrig = [urlStrig stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]];
NSURL *url = [NSURL URLWithString:urlStrig];
NSData *data = [NSData dataWithContentsOfURL:url];
});
2.NSURLConnection1>GETパラメータをurlに綴り合わせる
NSString *urlStrig = @"http://ip:port?name= &pwd=123";
urlStrig = [urlStrig stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]];
NSURL *url = [NSURL URLWithString:urlStrig];
NSURLRequest *request = [NSURLRequest requestWithURL:url];// GET
//
NSURLResponse *response = nil;
NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:nil];
//
[NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse * _Nullable response, NSData * _Nullable data, NSError * _Nullable connectionError) {
}];
一般的にhttpのGET要求はsendAynchronousRequestを使って非同期要求を送信すれば完成できます。大きなファイルをダウンロードするなら、代理方式を使って処理したほうがいいです。// NSURLConnection ,
//self NSURLConnectionDataDelegate
[NSURLConnection connectionWithRequest:request delegate:self]
NSURLConnection Data Delegate代理方法/**
@param response ,
*/
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response{
}
/**
@param data
*/
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data{
}
/**
*/
- (void)connectionDidFinishLoading:(NSURLConnection *)connection{
}
/**
*/
- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error{
}
2>POSTパラメータを要求体に書き込みます。NSString *urlStrig = @"http://ip:port/login";
urlStrig = [urlStrig stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]];
NSURL *url = [NSURL URLWithString:urlStrig];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
request.HTTPMethod = @"POST";
request.HTTPBody = [@"account=12345&pwd=123" dataUsingEncoding:NSUTF8StringEncoding];
[NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse * _Nullable response, NSData * _Nullable data, NSError * _Nullable connectionError) {
}];
ここでは普通のパラメータだけを設定します。ファイルをアップロードするならiOSを参照してファイルをアップロードしてもいいです。3.NSURLSession
使用方法はsessionオブジェクトを取得するために、sessionを使用して要求タスクを作成し、タスクを開始すればいいです。要求タスク:NSURLSessitionTaskは、URLセッションにおけるタスクのベースクラスであり、通常は直接使用せず、主にサブクラス1>簡単なhttp要求を使用する。
1. NSURLSession
NSURLSession *session = [NSURLSession sharedSession];
2. session
NSURL *url = [NSURL URLWithString:@""];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
NSURLSessionDataTask *task = [session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
}];
3.
[task resume];
ここでは簡単なGET要求です。POSTを使うならrequestを設定すればいいです。コードはNSURLConnectionと同じです。iOSファイルをダウンロードしてNSURLSessionの部分を参考にしてダウンロードしてください。4.AFNetWorking
AFNetWorkingは、NSURLConnectionとNSURLSessionをパッケージ化したフレーム1>GETです。
NSMutableDictionary *param = [NSMutableDictionary dictionary];
param[@"username"] = @" ";
param[@"age"] = @(20);
NSString *url = @"";
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
//
manager.requestSerializer.timeoutInterval = 30;
// (responseObject) NSDictionary , AFJSONResponseSerializer
manager.responseSerializer = [AFJSONResponseSerializer serializer];
// (responseObject) NSXMLParser
//manager.responseSerializer = [AFXMLParserResponseSerializer serializer];
// (responseObject) (NSData)
//manager.responseSerializer = [AFHTTPResponseSerializer serializer];
[manager GET:url parameters:param success:^(AFHTTPRequestOperation *operation, id responseObject) {
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
}];
2>POST間隔GET方法の「GET」を「POST」に変更すればいいです。ファイルをアップロードします。NSString *urlString = @"";
AFHTTPRequestOperationManager *mgr = [AFHTTPRequestOperationManager manager];
//
NSMutableDictionary *params = [NSMutableDictionary dictionary];
[params setObject:@" " forKey:@"username"];
[mgr POST:urlString parameters:params constructingBodyWithBlock:^(id formData) {
NSData *imageData = UIImagePNGRepresentation([UIImage imageNamed:@""]);
/**
@fileData :
@name :
@fileName :
@mimeType :
*/
[formData appendPartWithFileData:imageData name:@"file" fileName:@"text.png" mimeType:@"image/png"];
} success:^(AFHTTPRequestOperation *operation, id responseObject) {
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
}];
AHTTPSession ManagerとAHTTPRequest OperationManagerの使い方は基本的に同じです。