Вот как я это сделал для аутентификации NTLM в SharePoint 2010 через http.Он работает и возвращает словарь JSON из любого вызова listdata.svc (например, вызов URL yourdomain / _vti_bin / listdata.svc / YourList):
Grab AFNetworking и следуйте инструкциям, чтобы получитьэто в ваше приложение XCode.
Когда у вас есть компиляция AFNetworking в вашем проекте, вам нужно создать подкласс AFHTTPClient класса инфраструктуры AFNetworking.Например, добавьте новый класс в ваш проект XCode для iOS и выберите AFHTTPClient в качестве типа объекта.
Как только вы создадите подкласс, вы получите что-то вроде следующего:
YourHTTPClient.h
#import "AFHTTPClient.h"
#import "AFJSONRequestOperation.h"
#import "AFNetworkActivityIndicatorManager.h"
typedef void(^OLClientSuccess) (AFJSONRequestOperation *operation, id responseObject);
typedef void(^OLClientFailure) (AFJSONRequestOperation *operation, NSError *error);
@interface OLHTTPClient : AFHTTPClient
{
NSString *strBASEURL;
NSString *strUser;
NSString *strPassword;
}
@property (nonatomic, retain) NSString *strUser;
@property (nonatomic, retain) NSString *strPassword;
@property (nonatomic, retain) NSString *strBASEURL;
+(id) sharedClient;
- (void)setUsername:(NSString *)username andPassword:(NSString *)password;
-(void) getStuff:(OLClientSuccess) success failure:(OLClientFailure) failure;
@end
В вашем файле YourHTTPClient.m может быть указан код, приведенный ниже, но в этом файле .m будут реализованы вызовы пользовательских методов для получения данных списка из SharePoint.См. Ниже:
Фрагмент кода для проверки подлинности с YourHTTPClient.m:
- (void)getPath:(NSString *)path parameters:(NSDictionary *)parameters
success:(void (^)(AFHTTPRequestOperation *operation, id responseObject))success
failure:(void (^)(AFHTTPRequestOperation *operation, NSError *error))failure
{
NSURLRequest *request = [self requestWithMethod:@"GET" path:path parameters:parameters];
AFHTTPRequestOperation *operation = [self HTTPRequestOperationWithRequest:request success:success failure:failure];
[operation setAuthenticationChallengeBlock:^(NSURLConnection *connection, NSURLAuthenticationChallenge *challenge) {
NSURLCredential *newCredential = [NSURLCredential credentialWithUser:self.User password:self.password persistence:NSURLCredentialPersistenceForSession];
[challenge.sender useCredential:newCredential forAuthenticationChallenge:challenge];
}];
[self enqueueHTTPRequestOperation:operation];
}
@end
Я пробовал описанное выше только в среде SharePoint 2010, настроенной для проверки подлинности с использованием NTLM.Может потребоваться перенастройка, если вам нужно пройти аутентификацию с использованием Kerberos, но я подозреваю, что это возможно и с использованием AFNetworking.