2012-11-25 35 views
5

AFNetworking có hỗ trợ xác thực NTLM không?AFNetworking có hỗ trợ xác thực NTLM không?

Tôi biết ASIHTTPRequest có thể làm điều đó, tôi đang cố gắng di chuyển sang AFNetworking, nhưng tôi phải chắc chắn rằng nó sẽ có thể xử lý nó.

Tôi thực sự đã tìm kiếm trên Internet cho điều này, nhưng tôi không thể tìm thấy câu trả lời chính xác này.

Cảm ơn tất cả.

+0

có thể trùng lặp của [Xác thực NTLM AFNetworking?] (Http://stackoverflow.com/questions/12483465/afnetworking-ntlm-authentication) –

Trả lời

6

Có, AFNetworking hỗ trợ xác thực NTLM (hoặc về cơ bản bất kỳ phương thức xác thực nào) bằng cách cung cấp phản hồi dựa trên khối cho các thách thức xác thực nói chung.

Dưới đây là ví dụ về mã (giả sử operationAFHTTPRequestOperation, AFJSONRequestOperation, v.v ...). Trước khi bắt đầu các hoạt động thiết lập các khối xác thực thách thức như thế này:

[operation setAuthenticationChallengeBlock: 
^(NSURLConnection* connection, NSURLAuthenticationChallenge* challenge) 
{ 
    if([[challenge protectionSpace] authenticationMethod] == NSURLAuthenticationMethodNTLM) 
    { 
     if([challenge previousFailureCount] > 0) 
     { 
     // Avoid too many failed authentication attempts which could lock out the user 
     [[challenge sender] cancelAuthenticationChallenge:challenge]; 
     } 
     else 
     { 
     [[challenge sender] useCredential:[NSURLCredential credentialWithUser:@"username" password:@"password" persistence:NSURLCredentialPersistenceForSession] forAuthenticationChallenge:challenge]; 
     } 
    } 
    else 
    { 
     // Authenticate in other ways than NTLM if desired or cancel the auth like this: 
     [[challenge sender] cancelAuthenticationChallenge:challenge]; 
    } 
}]; 

Start hoặc enqueue hoạt động như bình thường và nên làm các trick.

Đây là phương pháp cơ bản mà phương pháp Wayne Hartman describes in his blog áp dụng cho AFNetworking.

+0

Cảm ơn bạn, tôi không biết rằng tôi có thể vượt qua một khối để giải quyết xác thực! Tôi sẽ thử nó sớm, nhưng trong dự án của tôi tôi đã hoàn thành một lib nhỏ hơn ASIHTTPRequest sử dụng cú pháp khối, đó là những gì tôi đang tìm kiếm =) –

+0

Bắt đầu sử dụng cách tiếp cận của bạn, hoạt động rất tốt! Cảm ơn bạn sir =) –

+0

Hmm, setAuthenticationChallengeBlock có vẻ là thuộc tính của thao tác kết nối, không phải là thao tác yêu cầu. – fizgig

Các vấn đề liên quan