0

我想改變我的老「ASIHTTP」代碼AFNetworking,並堅持在此, 可有人告訴我如何這個代碼塊轉換成AFNetworking如何使用AFNetworking做到這一點?

NSString *urlString = [NSString stringWithFormat:kLogin]; 
NSURL *url= [NSURL URLWithString:urlString]; 

ASIFormDataRequest *request= [ASIFormDataRequest requestWithURL:url]; 
[activeRequests addObject:request]; 
[request setValidatesSecureCertificate:YES]; //SSL enforcement 
[request addRequestHeader:@"Host" value:kHost]; 
[request addRequestHeader:@"Accept" value:@"application/xml, text/javascript, */*; q=0.01"]; 
[request addRequestHeader:@"Accept-Language" value:@"en-us,en;q=0.5"]; 
[request addRequestHeader:@"Accept-Encoding" value:@"gzip, deflate"]; 
[request addRequestHeader:@"Connection" value:@"keep-alive"]; 
[request addRequestHeader:@"X-Requested-With" value:@"XMLHttpRequest"]; 
[request addRequestHeader:@"Authorization" value:[NSString stringWithFormat:@"Basic %@", [Utils base64String:[NSString stringWithFormat:@"%@:%@", username, password]]]]; 
[request setDelegate:self];   
[[ASIDownloadCache sharedCache] clearCachedResponsesForStoragePolicy:ASICachePermanentlyCacheStoragePolicy]; 
[ASIHTTPRequest clearSession]; 
[request setTimeOutSeconds:REQUEST_TIME_OUT_SECS]; 
[request startAsynchronous]; 

我與請求一起試圖AFHTTPClient操作但卡在認證部分。 和獲取錯誤401

我已經用於AFNetworking的代碼,

的NSString * urlString = [NSString的stringWithFormat:kLogin]; NSURL * url = [NSURL URLWithString:urlString];

AppHTTPClient* httpClient = [[AppHTTPClient alloc] initWithBaseURL:url]; 
[httpClient setDefaultHeader:@"Host" value:kHost]; 
[httpClient setDefaultHeader:@"Accept" value:@"application/xml, text/javascript, */*; q=0.01"]; 
[httpClient setDefaultHeader:@"Accept-Language" value:@"en-us,en;q=0.5"]; 
[httpClient setDefaultHeader:@"Accept-Encoding" value:@"gzip, deflate"]; 
[httpClient setDefaultHeader:@"Connection" value:@"keep-alive"]; 
[httpClient setDefaultHeader:@"X-Requested-With" value:@"XMLHttpRequest"]; 

[httpClient registerHTTPOperationClass:[AFHTTPRequestOperation class]]; 

[httpClient setAuthorizationHeaderWithUsername:username password:password]; 
NSMutableURLRequest *request = [httpClient requestWithMethod:@"GET" 
                 path:nil 
                parameters:nil]; 

AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request]; 


operation.allowsInvalidSSLCertificate = YES; 

[operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) { 
    NSLog(@"2"); 

} failure:^(AFHTTPRequestOperation *operation, NSError *error) { 

    NSLog([error localizedDescription]); 
    NSLog(operation.responseString); 

} 
]; 
[operation start]; 
+0

請發表您寫的AFNetworking代碼,以便我們可以比較。 –

+0

編輯問題,看看。 – infiniteLoop

回答

0

使用AFHTTPClient setAuthorizationHeaderWithUsername:password:方法來處理認證。它應該起作用,至少在我的情況下是這樣。

+0

我已經嘗試過了,但它給出了錯誤401. – infiniteLoop

+0

嘗試使用REST客戶端設置相同標頭的請求。 – e1985

0

解決!

'ASIHTTP'默認添加'User-Agent',如 'App_Name_with_Version(iPad Simulator; iPhone OS 6.0; en_US)'和AFNetworking as not。 所以我在創建請求和現在的工作中添加了這個。