0

내가 AFNetworking에 내 옛날 'ASIHTTP'코드를 변경하려고,이 이상 붙어, 어떤 사람은 어떻게 요청과 함께 AFHTTPClient을 시도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]; 

을 AFNetworking에이 코드 덩어리를 변환하는 말해 줄 수 작동하지만 인증 부분에 걸렸습니다. 하기 및 ​​오류 401

I가 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'는 기본적으로 '사용자 에이전트'를 'App_Name_with_Version (iPad 시뮬레이터, iPhone OS 6.0; en_US)'로 추가했으며 AFNetworking은 아니 었습니다. 그래서 요청 작성 및 작업 중에이 내용을 추가했습니다.