AFNがリクエストヘッダヘッダとbodyを追加する方法

1902 ワード

今日ブログを更新して、前に多くの友达が私にAFNetworking 3.0が古い方法を舍てたことを闻いて、3.0はどのように“header”と请求体“body”を追加して、申し訳ありませんが、この間ずっととても忙しい状态で、今日やっと暇を見つけてブログを更新して、みんなに役に立つことを望みます.

一、3.0以前のバージョン


1、まず、AFNはarcの下で使用するので、arc以外は-objc-arc 2を追加し、次に、対応するライブラリ:CoreLocationをインポートする必要がある.framework SystemConfiguration.framework MobileCoreServices.framework Security.framework 3、実はAFNリクエストもNSURLRequestを継承しているので、リクエストコードは以下のように、詳しく説明せずに直接コードを貼ります.
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:url]];
[request setHTTPMethod:@"POST"];
[request setHTTPBody:XXX];
[request setValue:@"XXX" forHTTPHeaderField:@"nop"];
AFHTTPRequestOperation *op = [[AFHTTPRequestOperation alloc] initWithRequest:request];
[op setCompletionBlockWithSuccess:^(AFHTTPRequestOperation * _Nonnull operation, id  _Nonnull responseObject) {

    NSLog(@"%@", responseObject);
} failure:^(AFHTTPRequestOperation * _Nonnull operation, NSError * _Nonnull error) {
    NSLog(@"%@",error);
}];
[op start];

バージョン2、3.0(更新)

AFHTTPSessionManager *manger = [AFHTTPSessionManager manager];
AFHTTPRequestSerializer *requestSerializer =  [AFJSONRequestSerializer serializer];

NSDictionary *headerFieldValueDictionary = @{@"version":@"1.0"};
if (headerFieldValueDictionary != nil) {
    for (NSString *httpHeaderField in headerFieldValueDictionary.allKeys) {
        NSString *value = headerFieldValueDictionary[httpHeaderField];
        [requestSerializer setValue:value forHTTPHeaderField:httpHeaderField];
    }
}
manger.requestSerializer = requestSerializer;
[manger GET:@"url" parameters:nil  progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
       
   } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
       
}];