1

AFNetworkingからの切り替え後に使用しようとしていASIHTTPRequestます。

AFHTTPClientAPIバックエンドサーバーへのリクエストに使用します。現在、すべてのPOST リクエストのAFNetworking前に、csrf トークン (私は Django を使用) を取得するためのリクエストを (なしで) 行います (私はから取得します)。これを行うのは、POST リクエストごとに csrf トークンが必要だからです。AFNetworkingwww.example.org/api/csrf

でこのタスクを自動的に行う方法はありAFHTTPClientますか?

編集:

すべての POST リクエストの前に csrf トークンを取得するためのコードは次のとおりです。

NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:kTokenURL]];
NSData *jsonData = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
NSString *jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
NSDictionary *jsonDict = [jsonString objectFromJSONString];
NSString *csrf_token  = [jsonDict objectForKey:@"csrf_token"];
[jsonString release];
NSLog(@"token: %@", csrf_token);
4

1 に答える 1

3

はい、AFHTTPClient サブクラスを作成します (AFNetworking に付属のサンプル プロジェクトにこの例があります)。

@interface ファイルで:

#import <Foundation/Foundation.h>
#import "AFHTTPClient.h"

@interface HttpClientSubclass : AFHTTPClient
    + (HttpClientSubclass *)sharedClient;
@end

実装ファイルで:

#import "HttpClientSubclass.h"

@implementation HttpClientSubclass


+ (HttpClientSubclass *)sharedClient {
    static HttpClientSubclass *_sharedClient = nil;
    static dispatch_once_t oncePredicate;
    dispatch_once(&oncePredicate, ^{
    _sharedClient = [[self alloc] initWithBaseURL:[NSURL URLWithString:@"BASE-URL-GOES_HERE"]];
});

    return _sharedClient;
}

- (NSMutableURLRequest *)requestWithMethod:(NSString *)method 
                                  path:(NSString *)path 
                            parameters:(NSDictionary *)parameters { 

if ([method isEqualToString:@"POST"])
    //GET YOUR CSRF TOKEN HERE, AND PASS ONTO THE SUPER CLASS IN THE PARAMETERS

return [super requestWithMethod:method path:path parameters:parameters];

}

@end
于 2012-02-14T04:00:19.220 に答える