2015-04-29 22 views
5

Con AFNetworking Ho seguito lo schema di suggerimento per creare una sottoclasse specifica dell'applicazione di AFHTTPSessionManager. Il mio si presentava così:Alamofire equivalente di AFHTTPSessionManager

static NSString* Username = @""; 
static NSString* Password = @""; 
static NSString* BaseURL = @"https://abc.xyz.com:12345/"; 

@implementation HttpConnection 

+ (HttpConnection*) current { 
    static HttpConnection* current = nil; 
    static dispatch_once_t onceToken; 
    dispatch_once(&onceToken, ^{ 
     current = [[self alloc] initWithBaseURL: [NSURL URLWithString: BaseURL]]; 
     current.securityPolicy.allowInvalidCertificates = YES; 
     current.responseSerializer = [AFJSONResponseSerializer serializer]; 
     current.requestSerializer = [AFJSONRequestSerializer serializer]; 
    }); 
    [current.requestSerializer setAuthorizationHeaderFieldWithUsername: Username password: Password]; 
    return current; 
} 

Sono curioso come dovrei tradurre questo modello da usare con Alamofire. È solo qualcosa come il seguente?

static let BaseURL = "https://abc.xyz.com:12345/" 
static var User = "" 
static var Password = "" 

func myAppRequest((method: Method, URLString: URLStringConvertible, parameters: [String: AnyObject]? = nil, encoding: ParameterEncoding = .URL) -> Request { 
    let request = Alamofire.request(method, BaseURL + URLString, parameters, encoding) 
    request.authenticate(user: User, password: "Password) 
    return request 
} 

Sbirciare nel codice Alamofire, ho la sensazione che potrebbe essere possibile manipolare Alamofire.Manager.sharedInstance al momento opportuno (baseURL all'avvio dell'app, e utente/password ogni volta che quelli del cambiamento). Ma è meno ovvio come si procede (se è possibile).

+1

Mi piacerebbe che quando ci fosse un voto negativo, almeno ci si capiva perché. –

risposta

0

Sto utilizzando Alamofire.Manager per gestire tutte le richieste. Questo è come lo faccio.

//initialize with all details such as referrer etc 
self.manager = Alamofire.Manager(configuration: cfg) 


let user = "user" 
let password = "password" 
// you may manipulate configuration later on if you want. 
self.manager.session.configuration.HTTPAdditionalHeaders!["Referer"] = self.host 
self.manager.request(.GET, "https://httpbin.org/basic-auth/\(user)/\(password)") 
     .authenticate(user: user, password: password) 
     .responseJSON { (req, res, json, error) in 
      if(error != nil) { 
       NSLog("Error: \(error)") 
       failure(res, json, error) 
       return 
      } 
      else { 
       // do something with JSON 
    } 
} 
+3

mngr mi fa solo male all'anima. Per favore, per favore, usa le parole reali quando dai il nome alle cose, per il tuo bene e per il bene di chiunque legga il tuo codice. –

+0

Non voglio causare alcun dolore alla tua anima :) Ho rinominato la variabile. – Meanteacher

+0

Quindi non c'è modo di ottenere il '.authenticate' integrato nella configurazione? Self.host/Referrer è dove si imposta quello che finisce per essere un BaseURL? –