12年開始接觸開發到現在一直都是迷戀asi的一套東西,並且asi也有了自己的arc並且是有維護的版本;故每次的項目我還是“投機取巧”用原來的網絡請求庫。
上週“師傅”來找我,我問道他用神馬的時候,突然覺得自己的big低了些,於是乎開始在github看了下af的,本着開放包容的心態寫個簡單的測試看能否滿足我原來接口環境的需要。由於之前的接口是用.net開發的部署的訪問環境大多也是IIS的一套東西,神馬basic,wiondows,ntlm驗證。這裏重點說下NTLM驗證
http://xxxx.xxxx.com:8888/MobileService/MobileHandler.ashx?action=GetHomeData,歷史原因不是restful風格的;訪問這個地址的時候需要過NTLM驗證後,才能進行後面的比如表單值提交等等。
ASI裏面的兩條語句可以讓你忽略繁瑣的設置,這也是它的強大之處。
[req setusername:]
[req setpassword:]
儘管我這裏測試的是NTLM驗證,這種方式對basic也就用的,細心的同學斷點調試會發現這是asi封裝了進行身份驗證的最上層的方法,而在asi的實現部分(nsurlconnection中的回調方法)會先去判斷不是ntlm還是basic然後傳對應的“憑證”。
那麼如果在af(version:2.5)裏面的話我們還是需要多寫句給operation設置憑證,即可。
NSURLCredential *credential = [NSURLCredential credentialWithUser:[@"yourdomain\\" stringByAppendingString:@"zhaoyun"] password:@"pwd" persistence:NSURLCredentialPersistenceNone];
AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:req];
[operation setCredential:credential];
[operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {
NSLog(@"the result is %@",[operation responseString]);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"the error is %@",error);
}];
參考地址:
http://www.raywenderlich.com/forums/viewtopic.php?f=2&t=18385